From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933994AbbKSKh1 (ORCPT ); Thu, 19 Nov 2015 05:37:27 -0500 Received: from mailout1.samsung.com ([203.254.224.24]:54378 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932355AbbKSKhY (ORCPT ); Thu, 19 Nov 2015 05:37:24 -0500 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 X-AuditID: cbfee68e-f79f56d000004437-90-564da6623a91 Content-transfer-encoding: 8BIT Message-id: <564DA662.5060207@samsung.com> Date: Thu, 19 Nov 2015 19:37:22 +0900 From: Chanwoo Choi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: myungjoo.ham@samsung.com, =?UTF-8?B?67CV6rK966+8?= Cc: "linux-kernel@vger.kernel.org" , "linux-pm@vger.kernel.org" Subject: Re: [PATCH 6/6] PM / devfreq: Set the min_freq and max_freq of devfreq device References: <932082455.1194101447927858604.JavaMail.weblogic@ep2mlwas06b> In-reply-to: <932082455.1194101447927858604.JavaMail.weblogic@ep2mlwas06b> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpkkeLIzCtJLcpLzFFi42JZI2JSpJu0zDfMoPeinMXZpjfsFpd3zWGz +Nx7hNHiduMKNgcWj74tqxg9Pm+SC2CK4rJJSc3JLEst0rdL4MpY/X81Y8EC/ooJVx4zNTAe 4eli5OSQEDCRuHdyESOELSZx4d56ti5GLg4hgRWMEruu3mCEKbo75xELRGIWo8SWGztYQRK8 AoISPybfA0pwcDALyEscuZQNYapLTJmSC1H+gFFi7ZuPjBDlWhJtd08wg9gsAqoShxu2gNls QPH9L26wgfSKCkRIdJ+oBAmLCIRIvLnXxgZiMwtUSZxb/pcdxBYGKml5OAWsVUjAU+LS8udg NZwCXhIvtsxiB9krIbCMXeL3txNsELsEJL5NPgR2poSArMSmA8wQb0lKHFxxg2UCo9gsJM/M QnhmFsIzCxiZVzGKphYkFxQnpRcZ6RUn5haX5qXrJefnbmIExszpf8/6djDePGB9iFGAg1GJ h3fDKZ8wIdbEsuLK3EOMpkA3TGSWEk3OB0ZmXkm8obGZkYWpiamxkbmlmZI4b4LUz2AhgfTE ktTs1NSC1KL4otKc1OJDjEwcnFINjHGWf7Ydi9E6Wn9s/lJG79XMn1Y6pFRfU9lUtH1S6qdk wcn3T5VUz/TTZV7X9t0jrLOGh9vcVGWldquHWYbCB661Mo6dFlsLpt2LdlpmKWhzJ8Wje83u XB6egPUJ97aud9TR3T1TlNFvbUSnDEOdzu+57h52N5M+V1+KeXZhgtpCO5v1r+5dV2Ipzkg0 1GIuKk4EAE4uSPyUAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrHIsWRmVeSWpSXmKPExsVy+t9jQd2kZb5hBus+iVmcbXrDbnF51xw2 i8+9RxgtbjeuYHNg8ejbsorR4/MmuQCmqAZGm4zUxJTUIoXUvOT8lMy8dFsl7+B453hTMwND XUNLC3MlhbzE3FRbJRefAF23zBygTUoKZYk5pUChgMTiYiV9O0wTQkPcdC1gGiN0fUOC4HqM DNBAwhrGjNX/VzMWLOCvmHDlMVMD4xGeLkZODgkBE4m7cx6xQNhiEhfurWfrYuTiEBKYxSix 5cYOVpAEr4CgxI/J94CKODiYBeQljlzKhjDVJaZMyYUof8AosfbNR0aIci2JtrsnmEFsFgFV icMNW8BsNqD4/hc32EB6RQUiJLpPVIKERQRCJN7ca2MDsZkFqiTOLf/LDmILA5W0PJwC1iok 4ClxaflzsBpOAS+JF1tmsU9gBLoR4bhZCMfNQjhuASPzKkaJ1ILkguKk9FyjvNRyveLE3OLS vHS95PzcTYzguHwmvYPx8C73Q4wCHIxKPLwbTvmECbEmlhVX5h5ilOBgVhLhfTrNN0yINyWx siq1KD++qDQntfgQoynQdxOZpUST84EpI68k3tDYxMzI0sjc0MLI2FxJnFff0yhMSCA9sSQ1 OzW1ILUIpo+Jg1OqgXGncR/H533a9mVeNwV+aS3LD5n8339bzGS+hal9jWuCuD5M/fQnYZbR 3aZ73ybsddlq9OpJ8FJ24U6LduWYbTXnDIO2rZ92Z09gmOv5rVPPrOeuE1f+ssJTJuOIYmG+ n/WTtvk8D59e0V/+4/SEK6ffnjQ9slp+QwqHxWkf8TLNY4/XMzd3CxQqsRRnJBpqMRcVJwIA j9effuECAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2015년 11월 19일 19:10, MyungJoo Ham wrote: >> After probing the devfreq device driver, the value of both min_freq and >> max_freq are zero(0). So, this patch initializes the 'min_freq' and 'max_freq' >> field of devfreq device by using the freq_table array. >> >> Signed-off-by: Chanwoo Choi >> --- >> drivers/devfreq/devfreq.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c >> index c292ceb7ff19..0b24ae7b7a48 100644 >> --- a/drivers/devfreq/devfreq.c >> +++ b/drivers/devfreq/devfreq.c >> @@ -121,6 +121,11 @@ static void devfreq_set_freq_table(struct devfreq *devfreq) >> profile->freq_table[i] = freq; >> } >> rcu_read_unlock(); >> + >> + mutex_lock(&devfreq->lock); >> + devfreq->min_freq = profile->freq_table[0]; >> + devfreq->max_freq = profile->freq_table[profile->max_state - 1]; >> + mutex_unlock(&devfreq->lock); >> } > > No, you should not do this. > > It is allowed to use devfreq without both OPP and freq_table > assuming that the devfreq device may operate with very many > frequencies so that practically, we can virtually give it > any frequency numbers in a given range. > (cases where profile->max_state is 0 and it is not an error) > > The value 0 is used for min/max_freq to declare > that min/max_freq is deactivated. Therefore, it is not > required to do so; they are not intended to show the hardware > configuration as well. This case consider the devfreq device using OPP because devfreq_set_freq_table() get the number of OPP entry in OPP list before setting the min_freq/max_freq. If the devfreq device don't use the OPP entry, devfreq_set_freq_table() will return without any operation. IMHO, when devfreq device uses the OPP table including the frequency, min_freq/max_freq should show the correct value as CPUFREQ framework. Regards, Chanwoo CHoi