Message ID | 20250312172016.4070094-2-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | spi: sg2044-nor: A couple of cleanups | expand |
Hi Andy, kernel test robot noticed the following build errors: [auto build test ERROR on broonie-spi/for-next] [cannot apply to linus/master v6.14-rc6 next-20250312] [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/Andy-Shevchenko/spi-sg2044-nor-Fully-convert-to-device-managed-resources/20250313-012347 base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next patch link: https://lore.kernel.org/r/20250312172016.4070094-2-andriy.shevchenko%40linux.intel.com patch subject: [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources config: sh-allyesconfig (https://download.01.org/0day-ci/archive/20250313/202503130708.AmtUDVfq-lkp@intel.com/config) compiler: sh4-linux-gcc (GCC) 14.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250313/202503130708.AmtUDVfq-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/202503130708.AmtUDVfq-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/spi/spi-sg2044-nor.c: In function 'sg2044_spifmc_probe': >> drivers/spi/spi-sg2044-nor.c:459:44: error: macro "devm_mutex_init" requires 2 arguments, but only 1 given 459 | ret = devm_mutex_init(&spifmc->lock); | ^ In file included from include/linux/notifier.h:14, from include/linux/clk.h:14, from drivers/spi/spi-sg2044-nor.c:9: include/linux/mutex.h:144:9: note: macro "devm_mutex_init" defined here 144 | #define devm_mutex_init(dev, mutex) \ | ^~~~~~~~~~~~~~~ >> drivers/spi/spi-sg2044-nor.c:459:15: error: 'devm_mutex_init' undeclared (first use in this function) 459 | ret = devm_mutex_init(&spifmc->lock); | ^~~~~~~~~~~~~~~ drivers/spi/spi-sg2044-nor.c:459:15: note: each undeclared identifier is reported only once for each function it appears in vim +/devm_mutex_init +459 drivers/spi/spi-sg2044-nor.c 425 426 static int sg2044_spifmc_probe(struct platform_device *pdev) 427 { 428 struct spi_controller *ctrl; 429 struct sg2044_spifmc *spifmc; 430 void __iomem *base; 431 int ret; 432 433 ctrl = devm_spi_alloc_host(&pdev->dev, sizeof(*spifmc)); 434 if (!ctrl) 435 return -ENOMEM; 436 437 spifmc = spi_controller_get_devdata(ctrl); 438 439 spifmc->clk = devm_clk_get_enabled(&pdev->dev, NULL); 440 if (IS_ERR(spifmc->clk)) 441 return dev_err_probe(&pdev->dev, PTR_ERR(spifmc->clk), 442 "%s: Cannot get and enable AHB clock\n", 443 __func__); 444 445 spifmc->dev = &pdev->dev; 446 spifmc->ctrl = ctrl; 447 448 spifmc->io_base = devm_platform_ioremap_resource(pdev, 0); 449 if (IS_ERR(base)) 450 return PTR_ERR(base); 451 452 ctrl->num_chipselect = 1; 453 ctrl->dev.of_node = pdev->dev.of_node; 454 ctrl->bits_per_word_mask = SPI_BPW_MASK(8); 455 ctrl->auto_runtime_pm = false; 456 ctrl->mem_ops = &sg2044_spifmc_mem_ops; 457 ctrl->mode_bits = SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD; 458 > 459 ret = devm_mutex_init(&spifmc->lock); 460 if (ret) 461 return ret; 462 463 sg2044_spifmc_init(spifmc); 464 sg2044_spifmc_init_reg(spifmc); 465 466 ret = devm_spi_register_controller(&pdev->dev, ctrl); 467 if (ret) { 468 dev_err(&pdev->dev, "spi_register_controller failed\n"); 469 return ret; 470 } 471 472 return 0; 473 } 474
Hi Andy, kernel test robot noticed the following build errors: [auto build test ERROR on broonie-spi/for-next] [cannot apply to linus/master v6.14-rc6 next-20250312] [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/Andy-Shevchenko/spi-sg2044-nor-Fully-convert-to-device-managed-resources/20250313-012347 base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next patch link: https://lore.kernel.org/r/20250312172016.4070094-2-andriy.shevchenko%40linux.intel.com patch subject: [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20250313/202503130819.4zfx3AKS-lkp@intel.com/config) compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250313/202503130819.4zfx3AKS-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/202503130819.4zfx3AKS-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from drivers/spi/spi-sg2044-nor.c:11: 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:2224: include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 504 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 505 | item]; | ~~~~ include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 511 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 512 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 524 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 525 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/spi/spi-sg2044-nor.c:459:37: error: too few arguments provided to function-like macro invocation 459 | ret = devm_mutex_init(&spifmc->lock); | ^ include/linux/mutex.h:144:9: note: macro 'devm_mutex_init' defined here 144 | #define devm_mutex_init(dev, mutex) \ | ^ >> drivers/spi/spi-sg2044-nor.c:459:8: error: use of undeclared identifier 'devm_mutex_init'; did you mean '__devm_mutex_init'? 459 | ret = devm_mutex_init(&spifmc->lock); | ^~~~~~~~~~~~~~~ | __devm_mutex_init include/linux/mutex.h:129:5: note: '__devm_mutex_init' declared here 129 | int __devm_mutex_init(struct device *dev, struct mutex *lock); | ^ 3 warnings and 2 errors generated. vim +459 drivers/spi/spi-sg2044-nor.c 425 426 static int sg2044_spifmc_probe(struct platform_device *pdev) 427 { 428 struct spi_controller *ctrl; 429 struct sg2044_spifmc *spifmc; 430 void __iomem *base; 431 int ret; 432 433 ctrl = devm_spi_alloc_host(&pdev->dev, sizeof(*spifmc)); 434 if (!ctrl) 435 return -ENOMEM; 436 437 spifmc = spi_controller_get_devdata(ctrl); 438 439 spifmc->clk = devm_clk_get_enabled(&pdev->dev, NULL); 440 if (IS_ERR(spifmc->clk)) 441 return dev_err_probe(&pdev->dev, PTR_ERR(spifmc->clk), 442 "%s: Cannot get and enable AHB clock\n", 443 __func__); 444 445 spifmc->dev = &pdev->dev; 446 spifmc->ctrl = ctrl; 447 448 spifmc->io_base = devm_platform_ioremap_resource(pdev, 0); 449 if (IS_ERR(base)) 450 return PTR_ERR(base); 451 452 ctrl->num_chipselect = 1; 453 ctrl->dev.of_node = pdev->dev.of_node; 454 ctrl->bits_per_word_mask = SPI_BPW_MASK(8); 455 ctrl->auto_runtime_pm = false; 456 ctrl->mem_ops = &sg2044_spifmc_mem_ops; 457 ctrl->mode_bits = SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD; 458 > 459 ret = devm_mutex_init(&spifmc->lock); 460 if (ret) 461 return ret; 462 463 sg2044_spifmc_init(spifmc); 464 sg2044_spifmc_init_reg(spifmc); 465 466 ret = devm_spi_register_controller(&pdev->dev, ctrl); 467 if (ret) { 468 dev_err(&pdev->dev, "spi_register_controller failed\n"); 469 return ret; 470 } 471 472 return 0; 473 } 474
On Thu, Mar 13, 2025 at 07:34:50AM +0800, kernel test robot wrote: > Hi Andy, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on broonie-spi/for-next] > [cannot apply to linus/master v6.14-rc6 next-20250312] > [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/Andy-Shevchenko/spi-sg2044-nor-Fully-convert-to-device-managed-resources/20250313-012347 > base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next > patch link: https://lore.kernel.org/r/20250312172016.4070094-2-andriy.shevchenko%40linux.intel.com > patch subject: [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources > config: sh-allyesconfig (https://download.01.org/0day-ci/archive/20250313/202503130708.AmtUDVfq-lkp@intel.com/config) > compiler: sh4-linux-gcc (GCC) 14.2.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250313/202503130708.AmtUDVfq-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/202503130708.AmtUDVfq-lkp@intel.com/ > > All errors (new ones prefixed by >>): Oh, indeed, missed the compilation of this module somehow. Will be fixed in v2, thanks!
diff --git a/drivers/spi/spi-sg2044-nor.c b/drivers/spi/spi-sg2044-nor.c index 454153a63b42..e104cac57d41 100644 --- a/drivers/spi/spi-sg2044-nor.c +++ b/drivers/spi/spi-sg2044-nor.c @@ -435,7 +435,6 @@ static int sg2044_spifmc_probe(struct platform_device *pdev) return -ENOMEM; spifmc = spi_controller_get_devdata(ctrl); - dev_set_drvdata(&pdev->dev, ctrl); spifmc->clk = devm_clk_get_enabled(&pdev->dev, NULL); if (IS_ERR(spifmc->clk)) @@ -457,14 +456,15 @@ static int sg2044_spifmc_probe(struct platform_device *pdev) ctrl->mem_ops = &sg2044_spifmc_mem_ops; ctrl->mode_bits = SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD; - mutex_init(&spifmc->lock); + ret = devm_mutex_init(&spifmc->lock); + if (ret) + return ret; sg2044_spifmc_init(spifmc); sg2044_spifmc_init_reg(spifmc); ret = devm_spi_register_controller(&pdev->dev, ctrl); if (ret) { - mutex_destroy(&spifmc->lock); dev_err(&pdev->dev, "spi_register_controller failed\n"); return ret; } @@ -472,13 +472,6 @@ static int sg2044_spifmc_probe(struct platform_device *pdev) return 0; } -static void sg2044_spifmc_remove(struct platform_device *pdev) -{ - struct sg2044_spifmc *spifmc = platform_get_drvdata(pdev); - - mutex_destroy(&spifmc->lock); -} - static const struct of_device_id sg2044_spifmc_match[] = { { .compatible = "sophgo,sg2044-spifmc-nor" }, { /* sentinel */ } @@ -491,7 +484,6 @@ static struct platform_driver sg2044_nor_driver = { .of_match_table = sg2044_spifmc_match, }, .probe = sg2044_spifmc_probe, - .remove = sg2044_spifmc_remove, }; module_platform_driver(sg2044_nor_driver);
The driver has a wrong order of the cleaning up the resources, i.e. it first will destroy the mutex and only then free the SPI which might still use it. Fix this by switching to devm_mutex_init(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/spi/spi-sg2044-nor.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-)