From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: Re: [RFC PATCH 1/2] PM / devfreq: Add support delayed timer for polling mode
Date: Tue, 07 Jul 2020 17:13:40 +0300 [thread overview]
Message-ID: <20200707141340.GC2549@kadam> (raw)
In-Reply-To: <20200703062622.11773-2-cw00.choi@samsung.com>
[-- Attachment #1: Type: text/plain, Size: 14641 bytes --]
Hi Chanwoo,
url: https://github.com/0day-ci/linux/commits/Chanwoo-Choi/PM-devfreq-Add-delayed-timer-for-polling/20200703-141747
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7cc2a8ea104820dd9e702202621e8fd4d9f6c8cf
config: x86_64-randconfig-m001-20200703 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/devfreq/devfreq.c:910 devfreq_add_device() warn: passing zero to 'ERR_PTR'
# https://github.com/0day-ci/linux/commit/c7e29acd5781b7d5ae02d4cdaa825aa1ba89e33e
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout c7e29acd5781b7d5ae02d4cdaa825aa1ba89e33e
vim +/ERR_PTR +910 drivers/devfreq/devfreq.c
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 746 struct devfreq *devfreq_add_device(struct device *dev,
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 747 struct devfreq_dev_profile *profile,
1b5c1be2c88e84 Nishanth Menon 2012-10-29 748 const char *governor_name,
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 749 void *data)
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 750 {
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 751 struct devfreq *devfreq;
1b5c1be2c88e84 Nishanth Menon 2012-10-29 752 struct devfreq_governor *governor;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 753 int err = 0;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 754
1b5c1be2c88e84 Nishanth Menon 2012-10-29 755 if (!dev || !profile || !governor_name) {
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 756 dev_err(dev, "%s: Invalid parameters.\n", __func__);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 757 return ERR_PTR(-EINVAL);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 758 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 759
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 760 mutex_lock(&devfreq_list_lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 761 devfreq = find_device_devfreq(dev);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 762 mutex_unlock(&devfreq_list_lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 763 if (!IS_ERR(devfreq)) {
df4d7b1451bf51 Matthias Kaehlcke 2019-09-18 764 dev_err(dev, "%s: devfreq device already exists!\n",
9d0109be482cf7 Chanwoo Choi 2016-11-19 765 __func__);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 766 err = -EINVAL;
3f19f08a7ec74c Axel Lin 2011-11-15 767 goto err_out;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 768 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 769
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 770 devfreq = kzalloc(sizeof(struct devfreq), GFP_KERNEL);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 771 if (!devfreq) {
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 772 err = -ENOMEM;
3f19f08a7ec74c Axel Lin 2011-11-15 773 goto err_out;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 774 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 775
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 776 mutex_init(&devfreq->lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 777 mutex_lock(&devfreq->lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 778 devfreq->dev.parent = dev;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 779 devfreq->dev.class = devfreq_class;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 780 devfreq->dev.release = devfreq_dev_release;
42a6b25e67df6e Leonard Crestez 2019-11-14 781 INIT_LIST_HEAD(&devfreq->node);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 782 devfreq->profile = profile;
a316b5ca9ead80 Dmitry Osipenko 2020-02-27 783 strscpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 784 devfreq->previous_freq = profile->initial_freq;
8d39fc085d268a Lukasz Luba 2016-05-31 785 devfreq->last_status.current_frequency = profile->initial_freq;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 786 devfreq->data = data;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 787 devfreq->nb.notifier_call = devfreq_notifier_call;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 788
c7e29acd5781b7 Chanwoo Choi 2020-07-03 789 if (devfreq->profile->timer < 0
c7e29acd5781b7 Chanwoo Choi 2020-07-03 790 || devfreq->profile->timer >= DEVFREQ_TIMER_NUM) {
c7e29acd5781b7 Chanwoo Choi 2020-07-03 791 goto err_out;
"err" not set.
c7e29acd5781b7 Chanwoo Choi 2020-07-03 792 }
c7e29acd5781b7 Chanwoo Choi 2020-07-03 793
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 794 if (!devfreq->profile->max_state && !devfreq->profile->freq_table) {
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 795 mutex_unlock(&devfreq->lock);
ea572f816032be Chanwoo Choi 2017-10-23 796 err = set_freq_table(devfreq);
ea572f816032be Chanwoo Choi 2017-10-23 797 if (err < 0)
a9487917ba6728 Yangtao Li 2019-01-19 798 goto err_dev;
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 799 mutex_lock(&devfreq->lock);
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 800 }
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 801
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 802 devfreq->scaling_min_freq = find_available_min_freq(devfreq);
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 803 if (!devfreq->scaling_min_freq) {
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 804 mutex_unlock(&devfreq->lock);
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 805 err = -EINVAL;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 806 goto err_dev;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 807 }
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 808
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 809 devfreq->scaling_max_freq = find_available_max_freq(devfreq);
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 810 if (!devfreq->scaling_max_freq) {
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 811 mutex_unlock(&devfreq->lock);
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 812 err = -EINVAL;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 813 goto err_dev;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 814 }
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 815
83f8ca45afbf04 Lukasz Luba 2018-12-05 816 devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
83f8ca45afbf04 Lukasz Luba 2018-12-05 817 atomic_set(&devfreq->suspend_count, 0);
83f8ca45afbf04 Lukasz Luba 2018-12-05 818
66d0e797bf095d Orson Zhai 2020-02-21 819 dev_set_name(&devfreq->dev, "%s", dev_name(dev));
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 820 err = device_register(&devfreq->dev);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 821 if (err) {
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 822 mutex_unlock(&devfreq->lock);
2d803dc8f7a5f6 Arvind Yadav 2018-03-30 823 put_device(&devfreq->dev);
2d803dc8f7a5f6 Arvind Yadav 2018-03-30 824 goto err_out;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 825 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 826
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 827 devfreq->stats.trans_table = devm_kzalloc(&devfreq->dev,
a86854d0c599b3 Kees Cook 2018-06-12 828 array3_size(sizeof(unsigned int),
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 829 devfreq->profile->max_state,
a86854d0c599b3 Kees Cook 2018-06-12 830 devfreq->profile->max_state),
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 831 GFP_KERNEL);
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 832 if (!devfreq->stats.trans_table) {
25846fa1cedada Yangtao Li 2019-01-19 833 mutex_unlock(&devfreq->lock);
25846fa1cedada Yangtao Li 2019-01-19 834 err = -ENOMEM;
25846fa1cedada Yangtao Li 2019-01-19 835 goto err_devfreq;
25846fa1cedada Yangtao Li 2019-01-19 836 }
25846fa1cedada Yangtao Li 2019-01-19 837
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 838 devfreq->stats.time_in_state = devm_kcalloc(&devfreq->dev,
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 839 devfreq->profile->max_state,
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 840 sizeof(*devfreq->stats.time_in_state),
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 841 GFP_KERNEL);
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 842 if (!devfreq->stats.time_in_state) {
25846fa1cedada Yangtao Li 2019-01-19 843 mutex_unlock(&devfreq->lock);
25846fa1cedada Yangtao Li 2019-01-19 844 err = -ENOMEM;
25846fa1cedada Yangtao Li 2019-01-19 845 goto err_devfreq;
25846fa1cedada Yangtao Li 2019-01-19 846 }
25846fa1cedada Yangtao Li 2019-01-19 847
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 848 devfreq->stats.total_trans = 0;
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 849 devfreq->stats.last_update = get_jiffies_64();
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 850
0fe3a66410a3ba Chanwoo Choi 2016-01-26 851 srcu_init_notifier_head(&devfreq->transition_notifier_list);
0fe3a66410a3ba Chanwoo Choi 2016-01-26 852
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 853 mutex_unlock(&devfreq->lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 854
27dbc542f651ed Leonard Crestez 2019-12-05 855 err = dev_pm_qos_add_request(dev, &devfreq->user_min_freq_req,
27dbc542f651ed Leonard Crestez 2019-12-05 856 DEV_PM_QOS_MIN_FREQUENCY, 0);
27dbc542f651ed Leonard Crestez 2019-12-05 857 if (err < 0)
27dbc542f651ed Leonard Crestez 2019-12-05 858 goto err_devfreq;
27dbc542f651ed Leonard Crestez 2019-12-05 859 err = dev_pm_qos_add_request(dev, &devfreq->user_max_freq_req,
27dbc542f651ed Leonard Crestez 2019-12-05 860 DEV_PM_QOS_MAX_FREQUENCY,
27dbc542f651ed Leonard Crestez 2019-12-05 861 PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE);
27dbc542f651ed Leonard Crestez 2019-12-05 862 if (err < 0)
27dbc542f651ed Leonard Crestez 2019-12-05 863 goto err_devfreq;
27dbc542f651ed Leonard Crestez 2019-12-05 864
05d7ae15cfb18f Leonard Crestez 2019-12-05 865 devfreq->nb_min.notifier_call = qos_min_notifier_call;
05d7ae15cfb18f Leonard Crestez 2019-12-05 866 err = dev_pm_qos_add_notifier(devfreq->dev.parent, &devfreq->nb_min,
05d7ae15cfb18f Leonard Crestez 2019-12-05 867 DEV_PM_QOS_MIN_FREQUENCY);
05d7ae15cfb18f Leonard Crestez 2019-12-05 868 if (err)
05d7ae15cfb18f Leonard Crestez 2019-12-05 869 goto err_devfreq;
05d7ae15cfb18f Leonard Crestez 2019-12-05 870
05d7ae15cfb18f Leonard Crestez 2019-12-05 871 devfreq->nb_max.notifier_call = qos_max_notifier_call;
05d7ae15cfb18f Leonard Crestez 2019-12-05 872 err = dev_pm_qos_add_notifier(devfreq->dev.parent, &devfreq->nb_max,
05d7ae15cfb18f Leonard Crestez 2019-12-05 873 DEV_PM_QOS_MAX_FREQUENCY);
05d7ae15cfb18f Leonard Crestez 2019-12-05 874 if (err)
05d7ae15cfb18f Leonard Crestez 2019-12-05 875 goto err_devfreq;
05d7ae15cfb18f Leonard Crestez 2019-12-05 876
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 877 mutex_lock(&devfreq_list_lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 878
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 879 governor = try_then_request_governor(devfreq->governor_name);
73613b16cb5c5d Chanwoo Choi 2016-12-28 880 if (IS_ERR(governor)) {
73613b16cb5c5d Chanwoo Choi 2016-12-28 881 dev_err(dev, "%s: Unable to find governor for the device\n",
73613b16cb5c5d Chanwoo Choi 2016-12-28 882 __func__);
73613b16cb5c5d Chanwoo Choi 2016-12-28 883 err = PTR_ERR(governor);
73613b16cb5c5d Chanwoo Choi 2016-12-28 884 goto err_init;
73613b16cb5c5d Chanwoo Choi 2016-12-28 885 }
73613b16cb5c5d Chanwoo Choi 2016-12-28 886
1b5c1be2c88e84 Nishanth Menon 2012-10-29 887 devfreq->governor = governor;
73613b16cb5c5d Chanwoo Choi 2016-12-28 888 err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
73613b16cb5c5d Chanwoo Choi 2016-12-28 889 NULL);
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 890 if (err) {
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 891 dev_err(dev, "%s: Unable to start governor for the device\n",
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 892 __func__);
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 893 goto err_init;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 894 }
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 895
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 896 list_add(&devfreq->node, &devfreq_list);
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 897
0f376c9cd86c23 Axel Lin 2016-09-29 898 mutex_unlock(&devfreq_list_lock);
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 899
3f19f08a7ec74c Axel Lin 2011-11-15 900 return devfreq;
3f19f08a7ec74c Axel Lin 2011-11-15 901
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 902 err_init:
0f376c9cd86c23 Axel Lin 2016-09-29 903 mutex_unlock(&devfreq_list_lock);
25846fa1cedada Yangtao Li 2019-01-19 904 err_devfreq:
2f061fd0c2d852 Vincent Donnefort 2018-09-03 905 devfreq_remove_device(devfreq);
2d803dc8f7a5f6 Arvind Yadav 2018-03-30 906 devfreq = NULL;
9e14de1077e9c3 Chanwoo Choi 2017-08-24 907 err_dev:
9e14de1077e9c3 Chanwoo Choi 2017-08-24 908 kfree(devfreq);
3f19f08a7ec74c Axel Lin 2011-11-15 909 err_out:
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 @910 return ERR_PTR(err);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 911 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32259 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC PATCH 1/2] PM / devfreq: Add support delayed timer for polling mode
Date: Tue, 07 Jul 2020 17:13:40 +0300 [thread overview]
Message-ID: <20200707141340.GC2549@kadam> (raw)
In-Reply-To: <20200703062622.11773-2-cw00.choi@samsung.com>
[-- Attachment #1: Type: text/plain, Size: 14641 bytes --]
Hi Chanwoo,
url: https://github.com/0day-ci/linux/commits/Chanwoo-Choi/PM-devfreq-Add-delayed-timer-for-polling/20200703-141747
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7cc2a8ea104820dd9e702202621e8fd4d9f6c8cf
config: x86_64-randconfig-m001-20200703 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/devfreq/devfreq.c:910 devfreq_add_device() warn: passing zero to 'ERR_PTR'
# https://github.com/0day-ci/linux/commit/c7e29acd5781b7d5ae02d4cdaa825aa1ba89e33e
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout c7e29acd5781b7d5ae02d4cdaa825aa1ba89e33e
vim +/ERR_PTR +910 drivers/devfreq/devfreq.c
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 746 struct devfreq *devfreq_add_device(struct device *dev,
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 747 struct devfreq_dev_profile *profile,
1b5c1be2c88e84 Nishanth Menon 2012-10-29 748 const char *governor_name,
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 749 void *data)
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 750 {
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 751 struct devfreq *devfreq;
1b5c1be2c88e84 Nishanth Menon 2012-10-29 752 struct devfreq_governor *governor;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 753 int err = 0;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 754
1b5c1be2c88e84 Nishanth Menon 2012-10-29 755 if (!dev || !profile || !governor_name) {
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 756 dev_err(dev, "%s: Invalid parameters.\n", __func__);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 757 return ERR_PTR(-EINVAL);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 758 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 759
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 760 mutex_lock(&devfreq_list_lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 761 devfreq = find_device_devfreq(dev);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 762 mutex_unlock(&devfreq_list_lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 763 if (!IS_ERR(devfreq)) {
df4d7b1451bf51 Matthias Kaehlcke 2019-09-18 764 dev_err(dev, "%s: devfreq device already exists!\n",
9d0109be482cf7 Chanwoo Choi 2016-11-19 765 __func__);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 766 err = -EINVAL;
3f19f08a7ec74c Axel Lin 2011-11-15 767 goto err_out;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 768 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 769
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 770 devfreq = kzalloc(sizeof(struct devfreq), GFP_KERNEL);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 771 if (!devfreq) {
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 772 err = -ENOMEM;
3f19f08a7ec74c Axel Lin 2011-11-15 773 goto err_out;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 774 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 775
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 776 mutex_init(&devfreq->lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 777 mutex_lock(&devfreq->lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 778 devfreq->dev.parent = dev;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 779 devfreq->dev.class = devfreq_class;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 780 devfreq->dev.release = devfreq_dev_release;
42a6b25e67df6e Leonard Crestez 2019-11-14 781 INIT_LIST_HEAD(&devfreq->node);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 782 devfreq->profile = profile;
a316b5ca9ead80 Dmitry Osipenko 2020-02-27 783 strscpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 784 devfreq->previous_freq = profile->initial_freq;
8d39fc085d268a Lukasz Luba 2016-05-31 785 devfreq->last_status.current_frequency = profile->initial_freq;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 786 devfreq->data = data;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 787 devfreq->nb.notifier_call = devfreq_notifier_call;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 788
c7e29acd5781b7 Chanwoo Choi 2020-07-03 789 if (devfreq->profile->timer < 0
c7e29acd5781b7 Chanwoo Choi 2020-07-03 790 || devfreq->profile->timer >= DEVFREQ_TIMER_NUM) {
c7e29acd5781b7 Chanwoo Choi 2020-07-03 791 goto err_out;
"err" not set.
c7e29acd5781b7 Chanwoo Choi 2020-07-03 792 }
c7e29acd5781b7 Chanwoo Choi 2020-07-03 793
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 794 if (!devfreq->profile->max_state && !devfreq->profile->freq_table) {
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 795 mutex_unlock(&devfreq->lock);
ea572f816032be Chanwoo Choi 2017-10-23 796 err = set_freq_table(devfreq);
ea572f816032be Chanwoo Choi 2017-10-23 797 if (err < 0)
a9487917ba6728 Yangtao Li 2019-01-19 798 goto err_dev;
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 799 mutex_lock(&devfreq->lock);
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 800 }
0ec09ac2cebe97 Chanwoo Choi 2015-11-18 801
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 802 devfreq->scaling_min_freq = find_available_min_freq(devfreq);
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 803 if (!devfreq->scaling_min_freq) {
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 804 mutex_unlock(&devfreq->lock);
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 805 err = -EINVAL;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 806 goto err_dev;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 807 }
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 808
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 809 devfreq->scaling_max_freq = find_available_max_freq(devfreq);
2c2cb1e6b05b90 Matthias Kaehlcke 2018-05-25 810 if (!devfreq->scaling_max_freq) {
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 811 mutex_unlock(&devfreq->lock);
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 812 err = -EINVAL;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 813 goto err_dev;
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 814 }
ab8f58ad72c4d1 Chanwoo Choi 2017-10-23 815
83f8ca45afbf04 Lukasz Luba 2018-12-05 816 devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
83f8ca45afbf04 Lukasz Luba 2018-12-05 817 atomic_set(&devfreq->suspend_count, 0);
83f8ca45afbf04 Lukasz Luba 2018-12-05 818
66d0e797bf095d Orson Zhai 2020-02-21 819 dev_set_name(&devfreq->dev, "%s", dev_name(dev));
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 820 err = device_register(&devfreq->dev);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 821 if (err) {
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 822 mutex_unlock(&devfreq->lock);
2d803dc8f7a5f6 Arvind Yadav 2018-03-30 823 put_device(&devfreq->dev);
2d803dc8f7a5f6 Arvind Yadav 2018-03-30 824 goto err_out;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 825 }
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 826
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 827 devfreq->stats.trans_table = devm_kzalloc(&devfreq->dev,
a86854d0c599b3 Kees Cook 2018-06-12 828 array3_size(sizeof(unsigned int),
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 829 devfreq->profile->max_state,
a86854d0c599b3 Kees Cook 2018-06-12 830 devfreq->profile->max_state),
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 831 GFP_KERNEL);
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 832 if (!devfreq->stats.trans_table) {
25846fa1cedada Yangtao Li 2019-01-19 833 mutex_unlock(&devfreq->lock);
25846fa1cedada Yangtao Li 2019-01-19 834 err = -ENOMEM;
25846fa1cedada Yangtao Li 2019-01-19 835 goto err_devfreq;
25846fa1cedada Yangtao Li 2019-01-19 836 }
25846fa1cedada Yangtao Li 2019-01-19 837
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 838 devfreq->stats.time_in_state = devm_kcalloc(&devfreq->dev,
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 839 devfreq->profile->max_state,
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 840 sizeof(*devfreq->stats.time_in_state),
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 841 GFP_KERNEL);
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 842 if (!devfreq->stats.time_in_state) {
25846fa1cedada Yangtao Li 2019-01-19 843 mutex_unlock(&devfreq->lock);
25846fa1cedada Yangtao Li 2019-01-19 844 err = -ENOMEM;
25846fa1cedada Yangtao Li 2019-01-19 845 goto err_devfreq;
25846fa1cedada Yangtao Li 2019-01-19 846 }
25846fa1cedada Yangtao Li 2019-01-19 847
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 848 devfreq->stats.total_trans = 0;
1ebd0bc0e8adbf Kamil Konieczny 2019-12-06 849 devfreq->stats.last_update = get_jiffies_64();
3e1d7fb0d279fe MyungJoo Ham 2015-10-02 850
0fe3a66410a3ba Chanwoo Choi 2016-01-26 851 srcu_init_notifier_head(&devfreq->transition_notifier_list);
0fe3a66410a3ba Chanwoo Choi 2016-01-26 852
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 853 mutex_unlock(&devfreq->lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 854
27dbc542f651ed Leonard Crestez 2019-12-05 855 err = dev_pm_qos_add_request(dev, &devfreq->user_min_freq_req,
27dbc542f651ed Leonard Crestez 2019-12-05 856 DEV_PM_QOS_MIN_FREQUENCY, 0);
27dbc542f651ed Leonard Crestez 2019-12-05 857 if (err < 0)
27dbc542f651ed Leonard Crestez 2019-12-05 858 goto err_devfreq;
27dbc542f651ed Leonard Crestez 2019-12-05 859 err = dev_pm_qos_add_request(dev, &devfreq->user_max_freq_req,
27dbc542f651ed Leonard Crestez 2019-12-05 860 DEV_PM_QOS_MAX_FREQUENCY,
27dbc542f651ed Leonard Crestez 2019-12-05 861 PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE);
27dbc542f651ed Leonard Crestez 2019-12-05 862 if (err < 0)
27dbc542f651ed Leonard Crestez 2019-12-05 863 goto err_devfreq;
27dbc542f651ed Leonard Crestez 2019-12-05 864
05d7ae15cfb18f Leonard Crestez 2019-12-05 865 devfreq->nb_min.notifier_call = qos_min_notifier_call;
05d7ae15cfb18f Leonard Crestez 2019-12-05 866 err = dev_pm_qos_add_notifier(devfreq->dev.parent, &devfreq->nb_min,
05d7ae15cfb18f Leonard Crestez 2019-12-05 867 DEV_PM_QOS_MIN_FREQUENCY);
05d7ae15cfb18f Leonard Crestez 2019-12-05 868 if (err)
05d7ae15cfb18f Leonard Crestez 2019-12-05 869 goto err_devfreq;
05d7ae15cfb18f Leonard Crestez 2019-12-05 870
05d7ae15cfb18f Leonard Crestez 2019-12-05 871 devfreq->nb_max.notifier_call = qos_max_notifier_call;
05d7ae15cfb18f Leonard Crestez 2019-12-05 872 err = dev_pm_qos_add_notifier(devfreq->dev.parent, &devfreq->nb_max,
05d7ae15cfb18f Leonard Crestez 2019-12-05 873 DEV_PM_QOS_MAX_FREQUENCY);
05d7ae15cfb18f Leonard Crestez 2019-12-05 874 if (err)
05d7ae15cfb18f Leonard Crestez 2019-12-05 875 goto err_devfreq;
05d7ae15cfb18f Leonard Crestez 2019-12-05 876
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 877 mutex_lock(&devfreq_list_lock);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 878
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 879 governor = try_then_request_governor(devfreq->governor_name);
73613b16cb5c5d Chanwoo Choi 2016-12-28 880 if (IS_ERR(governor)) {
73613b16cb5c5d Chanwoo Choi 2016-12-28 881 dev_err(dev, "%s: Unable to find governor for the device\n",
73613b16cb5c5d Chanwoo Choi 2016-12-28 882 __func__);
73613b16cb5c5d Chanwoo Choi 2016-12-28 883 err = PTR_ERR(governor);
73613b16cb5c5d Chanwoo Choi 2016-12-28 884 goto err_init;
73613b16cb5c5d Chanwoo Choi 2016-12-28 885 }
73613b16cb5c5d Chanwoo Choi 2016-12-28 886
1b5c1be2c88e84 Nishanth Menon 2012-10-29 887 devfreq->governor = governor;
73613b16cb5c5d Chanwoo Choi 2016-12-28 888 err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
73613b16cb5c5d Chanwoo Choi 2016-12-28 889 NULL);
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 890 if (err) {
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 891 dev_err(dev, "%s: Unable to start governor for the device\n",
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 892 __func__);
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 893 goto err_init;
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 894 }
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 895
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 896 list_add(&devfreq->node, &devfreq_list);
23c7b54ca1cd17 Enric Balletbo i Serra 2018-07-04 897
0f376c9cd86c23 Axel Lin 2016-09-29 898 mutex_unlock(&devfreq_list_lock);
7e6fdd4bad033f Rajagopal Venkat 2012-10-26 899
3f19f08a7ec74c Axel Lin 2011-11-15 900 return devfreq;
3f19f08a7ec74c Axel Lin 2011-11-15 901
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 902 err_init:
0f376c9cd86c23 Axel Lin 2016-09-29 903 mutex_unlock(&devfreq_list_lock);
25846fa1cedada Yangtao Li 2019-01-19 904 err_devfreq:
2f061fd0c2d852 Vincent Donnefort 2018-09-03 905 devfreq_remove_device(devfreq);
2d803dc8f7a5f6 Arvind Yadav 2018-03-30 906 devfreq = NULL;
9e14de1077e9c3 Chanwoo Choi 2017-08-24 907 err_dev:
9e14de1077e9c3 Chanwoo Choi 2017-08-24 908 kfree(devfreq);
3f19f08a7ec74c Axel Lin 2011-11-15 909 err_out:
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 @910 return ERR_PTR(err);
a3c98b8b2ede1f MyungJoo Ham 2011-10-02 911 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32259 bytes --]
next prev parent reply other threads:[~2020-07-07 14:13 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200703061508epcas1p171aa3c0ab832b77e5837d8bd1e563742@epcas1p1.samsung.com>
2020-07-03 6:26 ` [RFC PATCH 0/2] PM / devfreq: Add delayed timer for polling Chanwoo Choi
2020-07-03 6:26 ` Chanwoo Choi
2020-07-03 6:26 ` [RFC PATCH 1/2] PM / devfreq: Add support delayed timer for polling mode Chanwoo Choi
2020-07-03 6:26 ` Chanwoo Choi
2020-07-07 14:13 ` Dan Carpenter [this message]
2020-07-07 14:13 ` Dan Carpenter
2020-07-03 6:26 ` [RFC PATCH 2/2] memory: samsung: exynos5422-dmc: Use delayed timer as default Chanwoo Choi
2020-07-03 6:26 ` Chanwoo Choi
2020-07-08 12:33 ` Krzysztof Kozlowski
2020-07-08 12:33 ` Krzysztof Kozlowski
2020-07-09 5:44 ` Chanwoo Choi
2020-07-09 5:44 ` Chanwoo Choi
2020-07-03 12:33 ` [RFC PATCH 0/2] PM / devfreq: Add delayed timer for polling Willy Wolff
2020-07-03 12:33 ` Willy Wolff
2020-07-08 14:25 ` Lukasz Luba
2020-07-08 14:25 ` Lukasz Luba
2020-07-10 15:12 ` Willy Wolff
2020-07-10 15:12 ` Willy Wolff
2020-07-13 8:55 ` Lukasz Luba
2020-07-13 8:55 ` Lukasz Luba
2020-07-08 10:52 ` Bartlomiej Zolnierkiewicz
2020-07-08 10:52 ` Bartlomiej Zolnierkiewicz
2020-07-08 14:01 ` Lukasz Luba
2020-07-08 14:01 ` Lukasz Luba
2020-07-03 17:21 [RFC PATCH 1/2] PM / devfreq: Add support delayed timer for polling mode kernel test robot
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=20200707141340.GC2549@kadam \
--to=dan.carpenter@oracle.com \
--cc=kbuild@lists.01.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.