All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Mark Brown <broonie@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Peter Geis <pgwipeout@gmail.com>,
	Nicolas Chauvet <kwizart@gmail.com>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Kevin Hilman <khilman@kernel.org>,
	Peter De Schrijver <pdeschrijver@nvidia.com>,
	Viresh Kumar <vireshk@kernel.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-media@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-clk@vger.kernel.org
Subject: Re: [PATCH v2 19/48] opp: Fix adding OPP entries in a wrong order if rate is unavailable
Date: Tue, 22 Dec 2020 14:42:55 +0530	[thread overview]
Message-ID: <20201222091255.wentz5hyt726qezg@vireshk-i7> (raw)
In-Reply-To: <20201217180638.22748-20-digetx@gmail.com>

On 17-12-20, 21:06, Dmitry Osipenko wrote:
> Fix adding OPP entries in a wrong (opposite) order if OPP rate is
> unavailable. The OPP comparison is erroneously skipped if OPP rate is
> missing, thus OPPs are left unsorted.
> 
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
>  drivers/opp/core.c | 23 ++++++++++++-----------
>  drivers/opp/opp.h  |  2 +-
>  2 files changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/opp/core.c b/drivers/opp/core.c
> index 34f7e530d941..5c7f130a8de2 100644
> --- a/drivers/opp/core.c
> +++ b/drivers/opp/core.c
> @@ -1531,9 +1531,10 @@ static bool _opp_supported_by_regulators(struct dev_pm_opp *opp,
>  	return true;
>  }
>  
> -int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2)
> +int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2,
> +		     bool rate_not_available)
>  {
> -	if (opp1->rate != opp2->rate)
> +	if (!rate_not_available && opp1->rate != opp2->rate)

rate will be 0 for both the OPPs here if rate_not_available is true and so this
change shouldn't be required.

>  		return opp1->rate < opp2->rate ? -1 : 1;
>  	if (opp1->bandwidth && opp2->bandwidth &&
>  	    opp1->bandwidth[0].peak != opp2->bandwidth[0].peak)
> @@ -1545,7 +1546,8 @@ int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2)
>  
>  static int _opp_is_duplicate(struct device *dev, struct dev_pm_opp *new_opp,
>  			     struct opp_table *opp_table,
> -			     struct list_head **head)
> +			     struct list_head **head,
> +			     bool rate_not_available)
>  {
>  	struct dev_pm_opp *opp;
>  	int opp_cmp;
> @@ -1559,13 +1561,13 @@ static int _opp_is_duplicate(struct device *dev, struct dev_pm_opp *new_opp,
>  	 * loop.
>  	 */
>  	list_for_each_entry(opp, &opp_table->opp_list, node) {
> -		opp_cmp = _opp_compare_key(new_opp, opp);
> +		opp_cmp = _opp_compare_key(new_opp, opp, rate_not_available);
>  		if (opp_cmp > 0) {
>  			*head = &opp->node;
>  			continue;
>  		}
>  
> -		if (opp_cmp < 0)
> +		if (opp_cmp < 0 || rate_not_available)
>  			return 0;

This shouldn't be required as well, isn't it ?

>  
>  		/* Duplicate OPPs */
> @@ -1601,12 +1603,11 @@ int _opp_add(struct device *dev, struct dev_pm_opp *new_opp,
>  	mutex_lock(&opp_table->lock);
>  	head = &opp_table->opp_list;
>  
> -	if (likely(!rate_not_available)) {
> -		ret = _opp_is_duplicate(dev, new_opp, opp_table, &head);
> -		if (ret) {
> -			mutex_unlock(&opp_table->lock);
> -			return ret;
> -		}
> +	ret = _opp_is_duplicate(dev, new_opp, opp_table, &head,
> +				rate_not_available);

This is the only thing we need to do here I believe.

> +	if (ret) {
> +		mutex_unlock(&opp_table->lock);
> +		return ret;
>  	}
>  
>  	list_add(&new_opp->node, head);
> diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h
> index 4ced7ffa8158..6f5be6c72f13 100644
> --- a/drivers/opp/opp.h
> +++ b/drivers/opp/opp.h
> @@ -219,7 +219,7 @@ struct opp_table *_find_opp_table(struct device *dev);
>  struct opp_device *_add_opp_dev(const struct device *dev, struct opp_table *opp_table);
>  struct dev_pm_opp *_opp_allocate(struct opp_table *opp_table);
>  void _opp_free(struct dev_pm_opp *opp);
> -int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2);
> +int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2, bool rate_not_available);
>  int _opp_add(struct device *dev, struct dev_pm_opp *new_opp, struct opp_table *opp_table, bool rate_not_available);
>  int _opp_add_v1(struct opp_table *opp_table, struct device *dev, unsigned long freq, long u_volt, bool dynamic);
>  void _dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask, int last_cpu);
> -- 
> 2.29.2

-- 
viresh

WARNING: multiple messages have this Message-ID (diff)
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	Michael Turquette <mturquette@baylibre.com>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-clk@vger.kernel.org, devel@driverdev.osuosl.org,
	Kevin Hilman <khilman@kernel.org>,
	Nicolas Chauvet <kwizart@gmail.com>,
	Viresh Kumar <vireshk@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	Rob Herring <robh+dt@kernel.org>,
	linux-tegra@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Peter De Schrijver <pdeschrijver@nvidia.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Peter Geis <pgwipeout@gmail.com>
Subject: Re: [PATCH v2 19/48] opp: Fix adding OPP entries in a wrong order if rate is unavailable
Date: Tue, 22 Dec 2020 14:42:55 +0530	[thread overview]
Message-ID: <20201222091255.wentz5hyt726qezg@vireshk-i7> (raw)
In-Reply-To: <20201217180638.22748-20-digetx@gmail.com>

On 17-12-20, 21:06, Dmitry Osipenko wrote:
> Fix adding OPP entries in a wrong (opposite) order if OPP rate is
> unavailable. The OPP comparison is erroneously skipped if OPP rate is
> missing, thus OPPs are left unsorted.
> 
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
>  drivers/opp/core.c | 23 ++++++++++++-----------
>  drivers/opp/opp.h  |  2 +-
>  2 files changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/opp/core.c b/drivers/opp/core.c
> index 34f7e530d941..5c7f130a8de2 100644
> --- a/drivers/opp/core.c
> +++ b/drivers/opp/core.c
> @@ -1531,9 +1531,10 @@ static bool _opp_supported_by_regulators(struct dev_pm_opp *opp,
>  	return true;
>  }
>  
> -int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2)
> +int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2,
> +		     bool rate_not_available)
>  {
> -	if (opp1->rate != opp2->rate)
> +	if (!rate_not_available && opp1->rate != opp2->rate)

rate will be 0 for both the OPPs here if rate_not_available is true and so this
change shouldn't be required.

>  		return opp1->rate < opp2->rate ? -1 : 1;
>  	if (opp1->bandwidth && opp2->bandwidth &&
>  	    opp1->bandwidth[0].peak != opp2->bandwidth[0].peak)
> @@ -1545,7 +1546,8 @@ int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2)
>  
>  static int _opp_is_duplicate(struct device *dev, struct dev_pm_opp *new_opp,
>  			     struct opp_table *opp_table,
> -			     struct list_head **head)
> +			     struct list_head **head,
> +			     bool rate_not_available)
>  {
>  	struct dev_pm_opp *opp;
>  	int opp_cmp;
> @@ -1559,13 +1561,13 @@ static int _opp_is_duplicate(struct device *dev, struct dev_pm_opp *new_opp,
>  	 * loop.
>  	 */
>  	list_for_each_entry(opp, &opp_table->opp_list, node) {
> -		opp_cmp = _opp_compare_key(new_opp, opp);
> +		opp_cmp = _opp_compare_key(new_opp, opp, rate_not_available);
>  		if (opp_cmp > 0) {
>  			*head = &opp->node;
>  			continue;
>  		}
>  
> -		if (opp_cmp < 0)
> +		if (opp_cmp < 0 || rate_not_available)
>  			return 0;

This shouldn't be required as well, isn't it ?

>  
>  		/* Duplicate OPPs */
> @@ -1601,12 +1603,11 @@ int _opp_add(struct device *dev, struct dev_pm_opp *new_opp,
>  	mutex_lock(&opp_table->lock);
>  	head = &opp_table->opp_list;
>  
> -	if (likely(!rate_not_available)) {
> -		ret = _opp_is_duplicate(dev, new_opp, opp_table, &head);
> -		if (ret) {
> -			mutex_unlock(&opp_table->lock);
> -			return ret;
> -		}
> +	ret = _opp_is_duplicate(dev, new_opp, opp_table, &head,
> +				rate_not_available);

This is the only thing we need to do here I believe.

> +	if (ret) {
> +		mutex_unlock(&opp_table->lock);
> +		return ret;
>  	}
>  
>  	list_add(&new_opp->node, head);
> diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h
> index 4ced7ffa8158..6f5be6c72f13 100644
> --- a/drivers/opp/opp.h
> +++ b/drivers/opp/opp.h
> @@ -219,7 +219,7 @@ struct opp_table *_find_opp_table(struct device *dev);
>  struct opp_device *_add_opp_dev(const struct device *dev, struct opp_table *opp_table);
>  struct dev_pm_opp *_opp_allocate(struct opp_table *opp_table);
>  void _opp_free(struct dev_pm_opp *opp);
> -int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2);
> +int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2, bool rate_not_available);
>  int _opp_add(struct device *dev, struct dev_pm_opp *new_opp, struct opp_table *opp_table, bool rate_not_available);
>  int _opp_add_v1(struct opp_table *opp_table, struct device *dev, unsigned long freq, long u_volt, bool dynamic);
>  void _dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask, int last_cpu);
> -- 
> 2.29.2

-- 
viresh
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

WARNING: multiple messages have this Message-ID (diff)
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	Michael Turquette <mturquette@baylibre.com>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-clk@vger.kernel.org, devel@driverdev.osuosl.org,
	Kevin Hilman <khilman@kernel.org>,
	Nicolas Chauvet <kwizart@gmail.com>,
	Viresh Kumar <vireshk@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	Rob Herring <robh+dt@kernel.org>,
	linux-tegra@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Peter De Schrijver <pdeschrijver@nvidia.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Peter Geis <pgwipeout@gmail.com>
Subject: Re: [PATCH v2 19/48] opp: Fix adding OPP entries in a wrong order if rate is unavailable
Date: Tue, 22 Dec 2020 14:42:55 +0530	[thread overview]
Message-ID: <20201222091255.wentz5hyt726qezg@vireshk-i7> (raw)
In-Reply-To: <20201217180638.22748-20-digetx@gmail.com>

On 17-12-20, 21:06, Dmitry Osipenko wrote:
> Fix adding OPP entries in a wrong (opposite) order if OPP rate is
> unavailable. The OPP comparison is erroneously skipped if OPP rate is
> missing, thus OPPs are left unsorted.
> 
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
>  drivers/opp/core.c | 23 ++++++++++++-----------
>  drivers/opp/opp.h  |  2 +-
>  2 files changed, 13 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/opp/core.c b/drivers/opp/core.c
> index 34f7e530d941..5c7f130a8de2 100644
> --- a/drivers/opp/core.c
> +++ b/drivers/opp/core.c
> @@ -1531,9 +1531,10 @@ static bool _opp_supported_by_regulators(struct dev_pm_opp *opp,
>  	return true;
>  }
>  
> -int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2)
> +int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2,
> +		     bool rate_not_available)
>  {
> -	if (opp1->rate != opp2->rate)
> +	if (!rate_not_available && opp1->rate != opp2->rate)

rate will be 0 for both the OPPs here if rate_not_available is true and so this
change shouldn't be required.

>  		return opp1->rate < opp2->rate ? -1 : 1;
>  	if (opp1->bandwidth && opp2->bandwidth &&
>  	    opp1->bandwidth[0].peak != opp2->bandwidth[0].peak)
> @@ -1545,7 +1546,8 @@ int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2)
>  
>  static int _opp_is_duplicate(struct device *dev, struct dev_pm_opp *new_opp,
>  			     struct opp_table *opp_table,
> -			     struct list_head **head)
> +			     struct list_head **head,
> +			     bool rate_not_available)
>  {
>  	struct dev_pm_opp *opp;
>  	int opp_cmp;
> @@ -1559,13 +1561,13 @@ static int _opp_is_duplicate(struct device *dev, struct dev_pm_opp *new_opp,
>  	 * loop.
>  	 */
>  	list_for_each_entry(opp, &opp_table->opp_list, node) {
> -		opp_cmp = _opp_compare_key(new_opp, opp);
> +		opp_cmp = _opp_compare_key(new_opp, opp, rate_not_available);
>  		if (opp_cmp > 0) {
>  			*head = &opp->node;
>  			continue;
>  		}
>  
> -		if (opp_cmp < 0)
> +		if (opp_cmp < 0 || rate_not_available)
>  			return 0;

This shouldn't be required as well, isn't it ?

>  
>  		/* Duplicate OPPs */
> @@ -1601,12 +1603,11 @@ int _opp_add(struct device *dev, struct dev_pm_opp *new_opp,
>  	mutex_lock(&opp_table->lock);
>  	head = &opp_table->opp_list;
>  
> -	if (likely(!rate_not_available)) {
> -		ret = _opp_is_duplicate(dev, new_opp, opp_table, &head);
> -		if (ret) {
> -			mutex_unlock(&opp_table->lock);
> -			return ret;
> -		}
> +	ret = _opp_is_duplicate(dev, new_opp, opp_table, &head,
> +				rate_not_available);

This is the only thing we need to do here I believe.

> +	if (ret) {
> +		mutex_unlock(&opp_table->lock);
> +		return ret;
>  	}
>  
>  	list_add(&new_opp->node, head);
> diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h
> index 4ced7ffa8158..6f5be6c72f13 100644
> --- a/drivers/opp/opp.h
> +++ b/drivers/opp/opp.h
> @@ -219,7 +219,7 @@ struct opp_table *_find_opp_table(struct device *dev);
>  struct opp_device *_add_opp_dev(const struct device *dev, struct opp_table *opp_table);
>  struct dev_pm_opp *_opp_allocate(struct opp_table *opp_table);
>  void _opp_free(struct dev_pm_opp *opp);
> -int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2);
> +int _opp_compare_key(struct dev_pm_opp *opp1, struct dev_pm_opp *opp2, bool rate_not_available);
>  int _opp_add(struct device *dev, struct dev_pm_opp *new_opp, struct opp_table *opp_table, bool rate_not_available);
>  int _opp_add_v1(struct opp_table *opp_table, struct device *dev, unsigned long freq, long u_volt, bool dynamic);
>  void _dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask, int last_cpu);
> -- 
> 2.29.2

-- 
viresh
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2020-12-22  9:13 UTC|newest]

Thread overview: 369+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-17 18:05 [PATCH v2 00/48] Introduce core voltage scaling for NVIDIA Tegra20/30 SoCs Dmitry Osipenko
2020-12-17 18:05 ` Dmitry Osipenko
2020-12-17 18:05 ` Dmitry Osipenko
2020-12-17 18:05 ` [PATCH v2 01/48] dt-bindings: memory: tegra20: emc: Replace core regulator with power domain Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-21 22:53   ` Rob Herring
2020-12-21 22:53     ` Rob Herring
2020-12-21 22:53     ` Rob Herring
2020-12-17 18:05 ` [PATCH v2 02/48] dt-bindings: memory: tegra30: " Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-21 22:54   ` Rob Herring
2020-12-21 22:54     ` Rob Herring
2020-12-21 22:54     ` Rob Herring
2020-12-22 19:16     ` Dmitry Osipenko
2020-12-22 19:16       ` Dmitry Osipenko
2020-12-22 19:16       ` Dmitry Osipenko
2020-12-17 18:05 ` [PATCH v2 03/48] dt-bindings: memory: tegra124: " Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05 ` [PATCH v2 04/48] dt-bindings: host1x: Document OPP and power domain properties Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-22  0:09   ` Rob Herring
2020-12-22  0:09     ` Rob Herring
2020-12-22  0:09     ` Rob Herring
2020-12-17 18:05 ` [PATCH v2 05/48] media: dt: bindings: tegra-vde: " Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-22  0:09   ` Rob Herring
2020-12-22  0:09     ` Rob Herring
2020-12-22  0:09     ` Rob Herring
2020-12-17 18:05 ` [PATCH v2 06/48] dt-bindings: clock: tegra: Document clocks sub-node Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-22  0:14   ` Rob Herring
2020-12-22  0:14     ` Rob Herring
2020-12-22  0:14     ` Rob Herring
2020-12-22 19:16     ` Dmitry Osipenko
2020-12-22 19:16       ` Dmitry Osipenko
2020-12-22 19:16       ` Dmitry Osipenko
2020-12-17 18:05 ` [PATCH v2 07/48] dt-bindings: arm: tegra: Add binding for core power domain Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-19 10:57   ` Krzysztof Kozlowski
2020-12-19 10:57     ` Krzysztof Kozlowski
2020-12-19 10:57     ` Krzysztof Kozlowski
2020-12-20 18:26     ` Dmitry Osipenko
2020-12-20 18:26       ` Dmitry Osipenko
2020-12-20 18:26       ` Dmitry Osipenko
2020-12-17 18:05 ` [PATCH v2 08/48] regulator: Make regulator_sync_voltage() usable by coupled regulators Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05 ` [PATCH v2 09/48] opp: Add dev_pm_opp_sync_regulators() Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-17 18:05   ` Dmitry Osipenko
2020-12-22  6:41   ` Viresh Kumar
2020-12-22  6:41     ` Viresh Kumar
2020-12-22  6:41     ` Viresh Kumar
2020-12-17 18:06 ` [PATCH v2 10/48] opp: Add dev_pm_opp_set_voltage() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  6:41   ` Viresh Kumar
2020-12-22  6:41     ` Viresh Kumar
2020-12-22  6:41     ` Viresh Kumar
2020-12-17 18:06 ` [PATCH v2 11/48] opp: Add dev_pm_opp_find_level_ceil() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  6:42   ` Viresh Kumar
2020-12-22  6:42     ` Viresh Kumar
2020-12-22  6:42     ` Viresh Kumar
2020-12-22 19:15     ` Dmitry Osipenko
2020-12-22 19:15       ` Dmitry Osipenko
2020-12-22 19:15       ` Dmitry Osipenko
2020-12-23  4:19       ` Viresh Kumar
2020-12-23  4:19         ` Viresh Kumar
2020-12-23  4:19         ` Viresh Kumar
2020-12-23 20:37         ` Dmitry Osipenko
2020-12-23 20:37           ` Dmitry Osipenko
2020-12-23 20:37           ` Dmitry Osipenko
2020-12-24  6:43           ` Viresh Kumar
2020-12-24  6:43             ` Viresh Kumar
2020-12-24  6:43             ` Viresh Kumar
2020-12-24 13:00             ` Dmitry Osipenko
2020-12-24 13:00               ` Dmitry Osipenko
2020-12-24 13:00               ` Dmitry Osipenko
2020-12-28  6:22               ` Viresh Kumar
2020-12-28  6:22                 ` Viresh Kumar
2020-12-28  6:22                 ` Viresh Kumar
2020-12-28 14:03                 ` Dmitry Osipenko
2020-12-28 14:03                   ` Dmitry Osipenko
2020-12-28 14:03                   ` Dmitry Osipenko
2020-12-30  4:46                   ` Viresh Kumar
2020-12-30  4:46                     ` Viresh Kumar
2020-12-30  4:46                     ` Viresh Kumar
2020-12-30 14:02                     ` Dmitry Osipenko
2020-12-30 14:02                       ` Dmitry Osipenko
2020-12-30 14:02                       ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 12/48] opp: Add dev_pm_opp_get_required_pstate() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 13/48] opp: Add resource-managed versions of OPP API functions Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  8:55   ` Viresh Kumar
2020-12-22  8:55     ` Viresh Kumar
2020-12-22  8:55     ` Viresh Kumar
2020-12-22 19:14     ` Dmitry Osipenko
2020-12-22 19:14       ` Dmitry Osipenko
2020-12-22 19:14       ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 14/48] opp: Filter out OPPs based on availability of a required-OPP Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  8:59   ` Viresh Kumar
2020-12-22  8:59     ` Viresh Kumar
2020-12-22  8:59     ` Viresh Kumar
2020-12-22 19:17     ` Dmitry Osipenko
2020-12-22 19:17       ` Dmitry Osipenko
2020-12-22 19:17       ` Dmitry Osipenko
2020-12-23  4:22       ` Viresh Kumar
2020-12-23  4:22         ` Viresh Kumar
2020-12-23  4:22         ` Viresh Kumar
2020-12-23 20:48         ` Dmitry Osipenko
2020-12-23 20:48           ` Dmitry Osipenko
2020-12-23 20:48           ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 15/48] opp: Support set_opp() customization without requiring to use regulators Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  9:01   ` Viresh Kumar
2020-12-22  9:01     ` Viresh Kumar
2020-12-22  9:01     ` Viresh Kumar
2020-12-22 19:18     ` Dmitry Osipenko
2020-12-22 19:18       ` Dmitry Osipenko
2020-12-22 19:18       ` Dmitry Osipenko
2020-12-23  6:01   ` Viresh Kumar
2020-12-23  6:01     ` Viresh Kumar
2020-12-23  6:01     ` Viresh Kumar
2020-12-23 20:38     ` Dmitry Osipenko
2020-12-23 20:38       ` Dmitry Osipenko
2020-12-23 20:38       ` Dmitry Osipenko
2020-12-24  4:10       ` Viresh Kumar
2020-12-24  4:10         ` Viresh Kumar
2020-12-24  4:10         ` Viresh Kumar
2020-12-24 12:16         ` Dmitry Osipenko
2020-12-24 12:16           ` Dmitry Osipenko
2020-12-24 12:16           ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 16/48] opp: Handle missing OPP table in dev_pm_opp_xlate_performance_state() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 17/48] opp: Correct debug message in _opp_add_static_v2() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 18/48] opp: Print OPP level in debug message of _opp_add_static_v2() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 19/48] opp: Fix adding OPP entries in a wrong order if rate is unavailable Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  9:12   ` Viresh Kumar [this message]
2020-12-22  9:12     ` Viresh Kumar
2020-12-22  9:12     ` Viresh Kumar
2020-12-22 19:19     ` Dmitry Osipenko
2020-12-22 19:19       ` Dmitry Osipenko
2020-12-22 19:19       ` Dmitry Osipenko
2020-12-23  4:34       ` Viresh Kumar
2020-12-23  4:34         ` Viresh Kumar
2020-12-23  4:34         ` Viresh Kumar
2020-12-23 20:36         ` Dmitry Osipenko
2020-12-23 20:36           ` Dmitry Osipenko
2020-12-23 20:36           ` Dmitry Osipenko
2020-12-24  6:28           ` Viresh Kumar
2020-12-24  6:28             ` Viresh Kumar
2020-12-24  6:28             ` Viresh Kumar
2020-12-24 12:14             ` Dmitry Osipenko
2020-12-24 12:14               ` Dmitry Osipenko
2020-12-24 12:14               ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 20/48] PM: domains: Make set_performance_state() callback optional Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2021-01-11  9:10   ` Ulf Hansson
2020-12-17 18:06 ` [PATCH v2 21/48] PM: domains: Add "performance" column to debug summary Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2021-01-11  9:13   ` Ulf Hansson
2021-01-11 11:28     ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 22/48] soc/tegra: pmc: Fix imbalanced clock disabling in error code path Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 23/48] soc/tegra: pmc: Pulse resets after removing power clamp Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-30 14:56   ` Dmitry Osipenko
2020-12-30 14:56     ` Dmitry Osipenko
2020-12-30 14:56     ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 24/48] soc/tegra: pmc: Ensure that clock rates aren't too high Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 25/48] soc/tegra: pmc: Print out domain name when reset fails to acquire Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 26/48] soc/tegra: Add devm_tegra_core_dev_init_opp_table() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 27/48] soc/tegra: Add CONFIG_SOC_TEGRA_COMMON and select PM_OPP by default Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 28/48] soc/tegra: Introduce core power domain driver Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  6:40   ` Viresh Kumar
2020-12-22  6:40     ` Viresh Kumar
2020-12-22  6:40     ` Viresh Kumar
2020-12-22 19:21     ` Dmitry Osipenko
2020-12-22 19:21       ` Dmitry Osipenko
2020-12-22 19:21       ` Dmitry Osipenko
2020-12-22 19:39       ` Dmitry Osipenko
2020-12-22 19:39         ` Dmitry Osipenko
2020-12-22 19:39         ` Dmitry Osipenko
2020-12-23  5:57         ` Viresh Kumar
2020-12-23  5:57           ` Viresh Kumar
2020-12-23  5:57           ` Viresh Kumar
2020-12-23 20:37           ` Dmitry Osipenko
2020-12-23 20:37             ` Dmitry Osipenko
2020-12-23 20:37             ` Dmitry Osipenko
2020-12-23 20:59             ` Dmitry Osipenko
2020-12-23 20:59               ` Dmitry Osipenko
2020-12-23 20:59               ` Dmitry Osipenko
2020-12-24  6:51             ` Viresh Kumar
2020-12-24  6:51               ` Viresh Kumar
2020-12-24  6:51               ` Viresh Kumar
2020-12-24 12:14               ` Dmitry Osipenko
2020-12-24 12:14                 ` Dmitry Osipenko
2020-12-24 12:14                 ` Dmitry Osipenko
2021-01-12 13:57   ` Ulf Hansson
2021-01-12 13:57     ` Ulf Hansson
2021-01-12 13:57     ` Ulf Hansson
2020-12-17 18:06 ` [PATCH v2 29/48] soc/tegra: pmc: Link domains to the parent Core domain Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2021-01-12 13:30   ` Ulf Hansson
2021-01-12 16:22     ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 30/48] soc/tegra: regulators: Fix locking up when voltage-spread is out of range Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 31/48] soc/tegra: regulators: Support Core domain state syncing Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2021-01-12 13:57   ` Ulf Hansson
2021-01-12 13:57     ` Ulf Hansson
2021-01-12 13:57     ` Ulf Hansson
2020-12-17 18:06 ` [PATCH v2 32/48] clk: tegra: Support runtime PM, power domain and OPP Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 33/48] gpu: host1x: Add host1x_channel_stop() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 34/48] gpu: host1x: Support power management Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:21   ` Mikko Perttunen
2020-12-17 18:21     ` Mikko Perttunen
2020-12-17 18:21     ` Mikko Perttunen
2020-12-17 18:45     ` Dmitry Osipenko
2020-12-17 18:45       ` Dmitry Osipenko
2020-12-17 18:45       ` Dmitry Osipenko
2020-12-17 20:58       ` Dmitry Osipenko
2020-12-17 20:58         ` Dmitry Osipenko
2020-12-17 20:58         ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 35/48] drm/tegra: dc: Support OPP and SoC core voltage scaling Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2021-01-12 14:16   ` Ulf Hansson
2020-12-17 18:06 ` [PATCH v2 36/48] drm/tegra: gr2d: Correct swapped device-tree compatibles Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 37/48] drm/tegra: gr2d: Support OPP and power management Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 38/48] drm/tegra: g3d: " Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 39/48] drm/tegra: vic: Stop channel before suspending Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 40/48] media: staging: tegra-vde: Support OPP and generic power domain Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 41/48] memory: tegra20-emc: Use devm_tegra_core_dev_init_opp_table() Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-19 11:02   ` Krzysztof Kozlowski
2020-12-19 11:02     ` Krzysztof Kozlowski
2020-12-19 11:02     ` Krzysztof Kozlowski
2020-12-20 18:34     ` Dmitry Osipenko
2020-12-20 18:34       ` Dmitry Osipenko
2020-12-20 18:34       ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 42/48] memory: tegra30-emc: " Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 43/48] ARM: tegra: Add OPP tables and power domains to Tegra20 device-tree Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  5:47   ` Viresh Kumar
2020-12-22  5:47     ` Viresh Kumar
2020-12-22  5:47     ` Viresh Kumar
2020-12-22 19:24     ` Dmitry Osipenko
2020-12-22 19:24       ` Dmitry Osipenko
2020-12-22 19:24       ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 44/48] ARM: tegra: Add OPP tables and power domains to Tegra30 device-tree Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-22  9:14   ` Viresh Kumar
2020-12-22  9:14     ` Viresh Kumar
2020-12-22  9:14     ` Viresh Kumar
2020-12-22 19:25     ` Dmitry Osipenko
2020-12-22 19:25       ` Dmitry Osipenko
2020-12-22 19:25       ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 45/48] ARM: tegra: acer-a500: Enable core voltage scaling Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 46/48] ARM: tegra: ventana: " Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 47/48] ARM: tegra: ventana: Support CPU voltage scaling and thermal throttling Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:28   ` Daniel Lezcano
2020-12-17 18:28     ` Daniel Lezcano
2020-12-17 18:28     ` Daniel Lezcano
2020-12-17 19:01     ` Dmitry Osipenko
2020-12-17 19:01       ` Dmitry Osipenko
2020-12-17 19:01       ` Dmitry Osipenko
2020-12-17 19:36       ` Daniel Lezcano
2020-12-17 19:36         ` Daniel Lezcano
2020-12-17 19:36         ` Daniel Lezcano
2020-12-17 20:28         ` Dmitry Osipenko
2020-12-17 20:28           ` Dmitry Osipenko
2020-12-17 20:28           ` Dmitry Osipenko
2020-12-17 21:19           ` Daniel Lezcano
2020-12-17 21:19             ` Daniel Lezcano
2020-12-17 21:19             ` Daniel Lezcano
2020-12-17 21:56             ` Dmitry Osipenko
2020-12-17 21:56               ` Dmitry Osipenko
2020-12-17 21:56               ` Dmitry Osipenko
2020-12-17 18:06 ` [PATCH v2 48/48] ARM: tegra: cardhu: " Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:06   ` Dmitry Osipenko
2020-12-17 18:28   ` Daniel Lezcano
2020-12-17 18:28     ` Daniel Lezcano
2020-12-17 18:28     ` Daniel Lezcano
2020-12-18  7:14 ` [PATCH v2 00/48] Introduce core voltage scaling for NVIDIA Tegra20/30 SoCs Viresh Kumar
2020-12-18  7:14   ` Viresh Kumar
2020-12-18  7:14   ` Viresh Kumar
2020-12-18 13:51   ` Dmitry Osipenko
2020-12-18 13:51     ` Dmitry Osipenko
2020-12-18 13:51     ` Dmitry Osipenko
2020-12-22  9:15     ` Viresh Kumar
2020-12-22  9:15       ` Viresh Kumar
2020-12-22  9:15       ` Viresh Kumar
2020-12-22 19:14       ` Dmitry Osipenko
2020-12-22 19:14         ` Dmitry Osipenko
2020-12-22 19:14         ` Dmitry Osipenko
2021-01-05 17:11 ` Krzysztof Kozlowski
2021-01-05 17:11   ` Krzysztof Kozlowski
2021-01-05 17:11   ` Krzysztof Kozlowski
2021-01-07 19:39   ` Dmitry Osipenko
2021-01-07 19:39     ` Dmitry Osipenko
2021-01-07 19:39     ` Dmitry Osipenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201222091255.wentz5hyt726qezg@vireshk-i7 \
    --to=viresh.kumar@linaro.org \
    --cc=broonie@kernel.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jonathanh@nvidia.com \
    --cc=khilman@kernel.org \
    --cc=krzk@kernel.org \
    --cc=kwizart@gmail.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=pdeschrijver@nvidia.com \
    --cc=pgwipeout@gmail.com \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=ulf.hansson@linaro.org \
    --cc=vireshk@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.