* [PATCH v1 0/2] spi: sg2044-nor: A couple of cleanups @ 2025-03-12 17:19 Andy Shevchenko 2025-03-12 17:19 ` [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources Andy Shevchenko 2025-03-12 17:19 ` [PATCH v1 2/2] spi: sg2044-nor: Convert to dev_err_probe() Andy Shevchenko 0 siblings, 2 replies; 6+ messages in thread From: Andy Shevchenko @ 2025-03-12 17:19 UTC (permalink / raw) To: Longbin Li, Andy Shevchenko, linux-spi, linux-kernel; +Cc: Mark Brown The driver has one ordering issue and one missed case for dev_err_probe(). Address that in this mini-series. Andy Shevchenko (2): spi: sg2044-nor: Fully convert to device managed resources spi: sg2044-nor: Convert to dev_err_probe() drivers/spi/spi-sg2044-nor.c | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) -- 2.47.2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources 2025-03-12 17:19 [PATCH v1 0/2] spi: sg2044-nor: A couple of cleanups Andy Shevchenko @ 2025-03-12 17:19 ` Andy Shevchenko 2025-03-12 23:34 ` kernel test robot 2025-03-13 0:51 ` kernel test robot 2025-03-12 17:19 ` [PATCH v1 2/2] spi: sg2044-nor: Convert to dev_err_probe() Andy Shevchenko 1 sibling, 2 replies; 6+ messages in thread From: Andy Shevchenko @ 2025-03-12 17:19 UTC (permalink / raw) To: Longbin Li, Andy Shevchenko, linux-spi, linux-kernel; +Cc: Mark Brown 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(-) 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); -- 2.47.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources 2025-03-12 17:19 ` [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources Andy Shevchenko @ 2025-03-12 23:34 ` kernel test robot 2025-03-13 9:20 ` Andy Shevchenko 2025-03-13 0:51 ` kernel test robot 1 sibling, 1 reply; 6+ messages in thread From: kernel test robot @ 2025-03-12 23:34 UTC (permalink / raw) To: Andy Shevchenko, Longbin Li, linux-spi, linux-kernel Cc: llvm, oe-kbuild-all, Mark Brown 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 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources 2025-03-12 23:34 ` kernel test robot @ 2025-03-13 9:20 ` Andy Shevchenko 0 siblings, 0 replies; 6+ messages in thread From: Andy Shevchenko @ 2025-03-13 9:20 UTC (permalink / raw) To: kernel test robot Cc: Longbin Li, linux-spi, linux-kernel, llvm, oe-kbuild-all, Mark Brown 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! -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources 2025-03-12 17:19 ` [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources Andy Shevchenko 2025-03-12 23:34 ` kernel test robot @ 2025-03-13 0:51 ` kernel test robot 1 sibling, 0 replies; 6+ messages in thread From: kernel test robot @ 2025-03-13 0:51 UTC (permalink / raw) To: Andy Shevchenko, Longbin Li, linux-spi, linux-kernel Cc: llvm, oe-kbuild-all, Mark Brown 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 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 2/2] spi: sg2044-nor: Convert to dev_err_probe() 2025-03-12 17:19 [PATCH v1 0/2] spi: sg2044-nor: A couple of cleanups Andy Shevchenko 2025-03-12 17:19 ` [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources Andy Shevchenko @ 2025-03-12 17:19 ` Andy Shevchenko 1 sibling, 0 replies; 6+ messages in thread From: Andy Shevchenko @ 2025-03-12 17:19 UTC (permalink / raw) To: Longbin Li, Andy Shevchenko, linux-spi, linux-kernel; +Cc: Mark Brown One of the cases in sg2044_spifmc_probe() may be converted to use dev_err_probe(). Do it. While at it, use local device pointer in all such calls and drop unneeded __func__ parameter as dev_err_probe() is assumed to be called only during probe phase. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/spi/spi-sg2044-nor.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/spi/spi-sg2044-nor.c b/drivers/spi/spi-sg2044-nor.c index e104cac57d41..572792a59195 100644 --- a/drivers/spi/spi-sg2044-nor.c +++ b/drivers/spi/spi-sg2044-nor.c @@ -425,6 +425,7 @@ static void sg2044_spifmc_init(struct sg2044_spifmc *spifmc) static int sg2044_spifmc_probe(struct platform_device *pdev) { + struct device *dev = &pdev->dev; struct spi_controller *ctrl; struct sg2044_spifmc *spifmc; void __iomem *base; @@ -438,9 +439,7 @@ static int sg2044_spifmc_probe(struct platform_device *pdev) spifmc->clk = devm_clk_get_enabled(&pdev->dev, NULL); if (IS_ERR(spifmc->clk)) - return dev_err_probe(&pdev->dev, PTR_ERR(spifmc->clk), - "%s: Cannot get and enable AHB clock\n", - __func__); + return dev_err_probe(dev, PTR_ERR(spifmc->clk), "Cannot get and enable AHB clock\n"); spifmc->dev = &pdev->dev; spifmc->ctrl = ctrl; @@ -464,10 +463,8 @@ static int sg2044_spifmc_probe(struct platform_device *pdev) sg2044_spifmc_init_reg(spifmc); ret = devm_spi_register_controller(&pdev->dev, ctrl); - if (ret) { - dev_err(&pdev->dev, "spi_register_controller failed\n"); - return ret; - } + if (ret) + return dev_err_probe(dev, ret, "spi_register_controller failed\n"); return 0; } -- 2.47.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-03-13 9:20 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-03-12 17:19 [PATCH v1 0/2] spi: sg2044-nor: A couple of cleanups Andy Shevchenko 2025-03-12 17:19 ` [PATCH v1 1/2] spi: sg2044-nor: Fully convert to device managed resources Andy Shevchenko 2025-03-12 23:34 ` kernel test robot 2025-03-13 9:20 ` Andy Shevchenko 2025-03-13 0:51 ` kernel test robot 2025-03-12 17:19 ` [PATCH v1 2/2] spi: sg2044-nor: Convert to dev_err_probe() Andy Shevchenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox