Message ID | 20240917171647.1403910-13-eajames@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | fsi: Fixes and improvements | expand |
Hi Eddie, kernel test robot noticed the following build warnings: [auto build test WARNING on linus/master] [also build test WARNING on v6.11 next-20240920] [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/Eddie-James/fsi-hub-Set-master-index-to-link-number-plus-one/20240918-012109 base: linus/master patch link: https://lore.kernel.org/r/20240917171647.1403910-13-eajames%40linux.ibm.com patch subject: [PATCH 12/15] fsi: occ: Get device number from FSI minor number API config: arc-randconfig-002-20240920 (https://download.01.org/0day-ci/archive/20240920/202409201954.IYcZNCSj-lkp@intel.com/config) compiler: arc-elf-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240920/202409201954.IYcZNCSj-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202409201954.IYcZNCSj-lkp@intel.com/ All warnings (new ones prefixed by >>): drivers/fsi/fsi-occ.c: In function 'occ_remove': >> drivers/fsi/fsi-occ.c:708:16: warning: 'return' with a value, in function returning void [-Wreturn-type] 708 | return 0; | ^ drivers/fsi/fsi-occ.c:690:13: note: declared here 690 | static void occ_remove(struct platform_device *pdev) | ^~~~~~~~~~ vim +/return +708 drivers/fsi/fsi-occ.c 689 690 static void occ_remove(struct platform_device *pdev) 691 { 692 struct occ *occ = platform_get_drvdata(pdev); 693 694 misc_deregister(&occ->mdev); 695 696 mutex_lock(&occ->occ_lock); 697 kvfree(occ->buffer); 698 occ->buffer = NULL; 699 mutex_unlock(&occ->occ_lock); 700 701 if (occ->platform_hwmon) 702 device_for_each_child(&pdev->dev, NULL, occ_unregister_platform_child); 703 else 704 device_for_each_child(&pdev->dev, NULL, occ_unregister_of_child); 705 706 fsi_free_minor(occ->devt); 707 > 708 return 0; 709 } 710
Hi Eddie, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.11 next-20240920] [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/Eddie-James/fsi-hub-Set-master-index-to-link-number-plus-one/20240918-012109 base: linus/master patch link: https://lore.kernel.org/r/20240917171647.1403910-13-eajames%40linux.ibm.com patch subject: [PATCH 12/15] fsi: occ: Get device number from FSI minor number API config: arm-randconfig-002-20240920 (https://download.01.org/0day-ci/archive/20240920/202409202101.tu2dHrK3-lkp@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240920/202409202101.tu2dHrK3-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202409202101.tu2dHrK3-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/fsi/fsi-occ.c: In function 'occ_remove': >> drivers/fsi/fsi-occ.c:708:16: error: 'return' with a value, in function returning void [-Wreturn-mismatch] 708 | return 0; | ^ drivers/fsi/fsi-occ.c:690:13: note: declared here 690 | static void occ_remove(struct platform_device *pdev) | ^~~~~~~~~~ vim +/return +708 drivers/fsi/fsi-occ.c 689 690 static void occ_remove(struct platform_device *pdev) 691 { 692 struct occ *occ = platform_get_drvdata(pdev); 693 694 misc_deregister(&occ->mdev); 695 696 mutex_lock(&occ->occ_lock); 697 kvfree(occ->buffer); 698 occ->buffer = NULL; 699 mutex_unlock(&occ->occ_lock); 700 701 if (occ->platform_hwmon) 702 device_for_each_child(&pdev->dev, NULL, occ_unregister_platform_child); 703 else 704 device_for_each_child(&pdev->dev, NULL, occ_unregister_of_child); 705 706 fsi_free_minor(occ->devt); 707 > 708 return 0; 709 } 710
Hi Eddie, kernel test robot noticed the following build warnings: [auto build test WARNING on linus/master] [also build test WARNING on v6.11 next-20240920] [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/Eddie-James/fsi-hub-Set-master-index-to-link-number-plus-one/20240918-012109 base: linus/master patch link: https://lore.kernel.org/r/20240917171647.1403910-13-eajames%40linux.ibm.com patch subject: [PATCH 12/15] fsi: occ: Get device number from FSI minor number API config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20240921/202409210200.8czVX7S4-lkp@intel.com/config) compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 8663a75fa2f31299ab8d1d90288d9df92aadee88) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240921/202409210200.8czVX7S4-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202409210200.8czVX7S4-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from drivers/fsi/fsi-occ.c:3: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/s390/include/asm/elf.h:181: In file included from arch/s390/include/asm/mmu_context.h:11: In file included from arch/s390/include/asm/pgalloc.h:18: In file included from include/linux/mm.h:2237: include/linux/vmstat.h:503:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 503 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 504 | item]; | ~~~~ include/linux/vmstat.h:510:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 510 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 511 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:517:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 517 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:523:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 523 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 524 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/fsi/fsi-occ.c:708:2: warning: void function 'occ_remove' should not return a value [-Wreturn-mismatch] 708 | return 0; | ^ ~ 5 warnings generated. vim +/occ_remove +708 drivers/fsi/fsi-occ.c 689 690 static void occ_remove(struct platform_device *pdev) 691 { 692 struct occ *occ = platform_get_drvdata(pdev); 693 694 misc_deregister(&occ->mdev); 695 696 mutex_lock(&occ->occ_lock); 697 kvfree(occ->buffer); 698 occ->buffer = NULL; 699 mutex_unlock(&occ->occ_lock); 700 701 if (occ->platform_hwmon) 702 device_for_each_child(&pdev->dev, NULL, occ_unregister_platform_child); 703 else 704 device_for_each_child(&pdev->dev, NULL, occ_unregister_of_child); 705 706 fsi_free_minor(occ->devt); 707 > 708 return 0; 709 } 710
diff --git a/drivers/fsi/fsi-occ.c b/drivers/fsi/fsi-occ.c index f58b158d097c..11e090da0590 100644 --- a/drivers/fsi/fsi-occ.c +++ b/drivers/fsi/fsi-occ.c @@ -4,9 +4,9 @@ #include <linux/err.h> #include <linux/errno.h> #include <linux/fs.h> +#include <linux/fsi.h> #include <linux/fsi-sbefifo.h> #include <linux/gfp.h> -#include <linux/idr.h> #include <linux/kernel.h> #include <linux/list.h> #include <linux/miscdevice.h> @@ -44,6 +44,7 @@ struct occ { struct device *sbefifo; char name[32]; int idx; + dev_t devt; bool platform_hwmon; u8 sequence_number; void *buffer; @@ -75,8 +76,6 @@ struct occ_client { #define to_client(x) container_of((x), struct occ_client, xfr) -static DEFINE_IDA(occ_ida); - static int occ_open(struct inode *inode, struct file *file) { struct occ_client *client = kzalloc(sizeof(*client), GFP_KERNEL); @@ -622,7 +621,6 @@ static int occ_unregister_of_child(struct device *dev, void *data) static int occ_probe(struct platform_device *pdev) { int rc; - u32 reg; char child_name[32]; struct occ *occ; struct platform_device *hwmon_dev = NULL; @@ -637,6 +635,10 @@ static int occ_probe(struct platform_device *pdev) if (!occ) return -ENOMEM; + rc = fsi_get_new_minor(to_fsi_dev(dev->parent), fsi_dev_occ, &occ->devt, &occ->idx); + if (rc) + return rc; + /* SBE words are always four bytes */ occ->buffer = kvmalloc(OCC_MAX_RESP_WORDS * 4, GFP_KERNEL); if (!occ->buffer) @@ -651,23 +653,6 @@ static int occ_probe(struct platform_device *pdev) */ occ->sequence_number = (u8)((jiffies % 0xff) + 1); mutex_init(&occ->occ_lock); - - if (dev->of_node) { - rc = of_property_read_u32(dev->of_node, "reg", ®); - if (!rc) { - /* make sure we don't have a duplicate from dts */ - occ->idx = ida_alloc_range(&occ_ida, reg, reg, - GFP_KERNEL); - if (occ->idx < 0) - occ->idx = ida_alloc_min(&occ_ida, 1, - GFP_KERNEL); - } else { - occ->idx = ida_alloc_min(&occ_ida, 1, GFP_KERNEL); - } - } else { - occ->idx = ida_alloc_min(&occ_ida, 1, GFP_KERNEL); - } - platform_set_drvdata(pdev, occ); snprintf(occ->name, sizeof(occ->name), "occ%d", occ->idx); @@ -679,7 +664,7 @@ static int occ_probe(struct platform_device *pdev) rc = misc_register(&occ->mdev); if (rc) { dev_err(dev, "failed to register miscdevice: %d\n", rc); - ida_free(&occ_ida, occ->idx); + fsi_free_minor(occ->devt); kvfree(occ->buffer); return rc; } @@ -718,7 +703,9 @@ static void occ_remove(struct platform_device *pdev) else device_for_each_child(&pdev->dev, NULL, occ_unregister_of_child); - ida_free(&occ_ida, occ->idx); + fsi_free_minor(occ->devt); + + return 0; } static const struct of_device_id occ_match[] = { @@ -743,20 +730,7 @@ static struct platform_driver occ_driver = { .remove_new = occ_remove, }; -static int occ_init(void) -{ - return platform_driver_register(&occ_driver); -} - -static void occ_exit(void) -{ - platform_driver_unregister(&occ_driver); - - ida_destroy(&occ_ida); -} - -module_init(occ_init); -module_exit(occ_exit); +module_platform_driver(occ_driver); MODULE_AUTHOR("Eddie James <eajames@linux.ibm.com>"); MODULE_DESCRIPTION("BMC P9 OCC driver");