[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202210262333.Pq0M7cyQ-lkp@intel.com>
Date: Wed, 26 Oct 2022 23:58:42 +0800
From: kernel test robot <lkp@...el.com>
To: Qibo Huang <huangqibo.tech@...il.com>, rafael@...nel.org,
daniel.lezcano@...aro.org, amitk@...nel.org, rui.zhang@...el.com
Cc: oe-kbuild-all@...ts.linux.dev, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org, huangqibo <huangqibo@...omi.com>
Subject: Re: [PATCH] thermal/core: cooling device duplicate creation check
Hi Qibo,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on rafael-pm/thermal]
[also build test WARNING on linus/master v6.1-rc2 next-20221026]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Qibo-Huang/thermal-core-cooling-device-duplicate-creation-check/20221026-200457
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git thermal
patch link: https://lore.kernel.org/r/20221026120321.735-1-huangqibo.tech%40gmail.com
patch subject: [PATCH] thermal/core: cooling device duplicate creation check
config: m68k-allyesconfig
compiler: m68k-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/b9ffa61b51bd8fb000c57f602e94908c46345283
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Qibo-Huang/thermal-core-cooling-device-duplicate-creation-check/20221026-200457
git checkout b9ffa61b51bd8fb000c57f602e94908c46345283
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
drivers/thermal/thermal_core.c: In function '__thermal_cooling_device_register':
drivers/thermal/thermal_core.c:877:24: error: implicit declaration of function 'thermal_cdev_get_zone_by_name'; did you mean 'thermal_zone_get_zone_by_name'? [-Werror=implicit-function-declaration]
877 | cdev = thermal_cdev_get_zone_by_name(type);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| thermal_zone_get_zone_by_name
>> drivers/thermal/thermal_core.c:877:22: warning: assignment to 'struct thermal_cooling_device *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
877 | cdev = thermal_cdev_get_zone_by_name(type);
| ^
drivers/thermal/thermal_core.c: At top level:
>> drivers/thermal/thermal_core.c:1444:32: warning: no previous prototype for 'thermal_cdev_get_zone_by_name' [-Wmissing-prototypes]
1444 | struct thermal_cooling_device *thermal_cdev_get_zone_by_name(const char *name)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/thermal_core.c:1444:32: error: conflicting types for 'thermal_cdev_get_zone_by_name'; have 'struct thermal_cooling_device *(const char *)'
drivers/thermal/thermal_core.c:877:24: note: previous implicit declaration of 'thermal_cdev_get_zone_by_name' with type 'int()'
877 | cdev = thermal_cdev_get_zone_by_name(type);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +877 drivers/thermal/thermal_core.c
846
847 /**
848 * __thermal_cooling_device_register() - register a new thermal cooling device
849 * @np: a pointer to a device tree node.
850 * @type: the thermal cooling device type.
851 * @devdata: device private data.
852 * @ops: standard thermal cooling devices callbacks.
853 *
854 * This interface function adds a new thermal cooling device (fan/processor/...)
855 * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
856 * to all the thermal zone devices registered at the same time.
857 * It also gives the opportunity to link the cooling device to a device tree
858 * node, so that it can be bound to a thermal zone created out of device tree.
859 *
860 * Return: a pointer to the created struct thermal_cooling_device or an
861 * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
862 */
863 static struct thermal_cooling_device *
864 __thermal_cooling_device_register(struct device_node *np,
865 const char *type, void *devdata,
866 const struct thermal_cooling_device_ops *ops)
867 {
868 struct thermal_cooling_device *cdev;
869 struct thermal_zone_device *pos = NULL;
870 int id, ret;
871
872 if (!ops || !ops->get_max_state || !ops->get_cur_state ||
873 !ops->set_cur_state)
874 return ERR_PTR(-EINVAL);
875
876 if (type)
> 877 cdev = thermal_cdev_get_zone_by_name(type);
878
879 if (!IS_ERR_OR_NULL(cdev))
880 return cdev;
881
882 cdev = kzalloc(sizeof(*cdev), GFP_KERNEL);
883 if (!cdev)
884 return ERR_PTR(-ENOMEM);
885
886 ret = ida_alloc(&thermal_cdev_ida, GFP_KERNEL);
887 if (ret < 0)
888 goto out_kfree_cdev;
889 cdev->id = ret;
890 id = ret;
891
892 ret = dev_set_name(&cdev->device, "cooling_device%d", cdev->id);
893 if (ret)
894 goto out_ida_remove;
895
896 cdev->type = kstrdup(type ? type : "", GFP_KERNEL);
897 if (!cdev->type) {
898 ret = -ENOMEM;
899 goto out_ida_remove;
900 }
901
902 mutex_init(&cdev->lock);
903 INIT_LIST_HEAD(&cdev->thermal_instances);
904 cdev->np = np;
905 cdev->ops = ops;
906 cdev->updated = false;
907 cdev->device.class = &thermal_class;
908 cdev->devdata = devdata;
909 thermal_cooling_device_setup_sysfs(cdev);
910 ret = device_register(&cdev->device);
911 if (ret)
912 goto out_kfree_type;
913
914 /* Add 'this' new cdev to the global cdev list */
915 mutex_lock(&thermal_list_lock);
916 list_add(&cdev->node, &thermal_cdev_list);
917 mutex_unlock(&thermal_list_lock);
918
919 /* Update binding information for 'this' new cdev */
920 bind_cdev(cdev);
921
922 mutex_lock(&thermal_list_lock);
923 list_for_each_entry(pos, &thermal_tz_list, node)
924 if (atomic_cmpxchg(&pos->need_update, 1, 0))
925 thermal_zone_device_update(pos,
926 THERMAL_EVENT_UNSPECIFIED);
927 mutex_unlock(&thermal_list_lock);
928
929 return cdev;
930
931 out_kfree_type:
932 thermal_cooling_device_destroy_sysfs(cdev);
933 kfree(cdev->type);
934 put_device(&cdev->device);
935 cdev = NULL;
936 out_ida_remove:
937 ida_free(&thermal_cdev_ida, id);
938 out_kfree_cdev:
939 kfree(cdev);
940 return ERR_PTR(ret);
941 }
942
--
0-DAY CI Kernel Test Service
https://01.org/lkp
View attachment "config" of type "text/plain" (282273 bytes)
Powered by blists - more mailing lists