Message ID | 210a2eee928d2ae7aee65e177f20cfb3f00e29ee.1619621413.git.mchehab+huawei@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Address some issues with PM runtime at media subsystem | expand |
On 28.04.2021 16:51, Mauro Carvalho Chehab wrote: > Calling pm_runtime_get_sync() at driver's removal time is not > needed, as this will resume PM runtime. Also, the PM runtime > code at pm_runtime_disable() already calls it, if it detects > the need. > > So, change the logic in order to disable PM runtime earlier. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Thank you for correcting that. > --- > drivers/media/platform/exynos-gsc/gsc-core.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c > index 9f41c2e7097a..8b943075c503 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-core.c > +++ b/drivers/media/platform/exynos-gsc/gsc-core.c > @@ -1210,18 +1210,19 @@ static int gsc_remove(struct platform_device *pdev) > struct gsc_dev *gsc = platform_get_drvdata(pdev); > int i; > > - pm_runtime_get_sync(&pdev->dev); > - > gsc_unregister_m2m_device(gsc); > v4l2_device_unregister(&gsc->v4l2_dev); > > vb2_dma_contig_clear_max_seg_size(&pdev->dev); > - for (i = 0; i < gsc->num_clocks; i++) > - clk_disable_unprepare(gsc->clock[i]); > > - pm_runtime_put_noidle(&pdev->dev); > pm_runtime_disable(&pdev->dev); > + if (!pm_runtime_status_suspended(dev)) { It should be &pdev->dev here rather than dev... > + for (i = 0; i < gsc->num_clocks; i++) > + clk_disable_unprepare(gsc->clock[i]); > + } > + pm_runtime_set_suspended(dev); and here s/dev/&pdev->dev. With above issues fixed, Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> > dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name); > return 0; > } Thanks, Sylwester
Hi Mauro, I love your patch! Yet something to improve: [auto build test ERROR on linuxtv-media/master] [also build test ERROR on rockchip/for-next tegra/for-next v5.12 next-20210428] [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] url: https://github.com/0day-ci/linux/commits/Mauro-Carvalho-Chehab/Address-some-issues-with-PM-runtime-at-media-subsystem/20210428-225742 base: git://linuxtv.org/media_tree.git master config: nds32-randconfig-r035-20210428 (attached as .config) compiler: nds32le-linux-gcc (GCC) 9.3.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/0day-ci/linux/commit/b6dba4aea621c15b0aa6f92e548c74cd6994eb20 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mauro-Carvalho-Chehab/Address-some-issues-with-PM-runtime-at-media-subsystem/20210428-225742 git checkout b6dba4aea621c15b0aa6f92e548c74cd6994eb20 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=nds32 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/media/platform/exynos-gsc/gsc-core.c: In function 'gsc_remove': >> drivers/media/platform/exynos-gsc/gsc-core.c:1220:35: error: 'dev' undeclared (first use in this function); did you mean 'pdev'? 1220 | if (!pm_runtime_status_suspended(dev)) | ^~~ | pdev drivers/media/platform/exynos-gsc/gsc-core.c:1220:35: note: each undeclared identifier is reported only once for each function it appears in vim +1220 drivers/media/platform/exynos-gsc/gsc-core.c 1207 1208 static int gsc_remove(struct platform_device *pdev) 1209 { 1210 struct gsc_dev *gsc = platform_get_drvdata(pdev); 1211 int i; 1212 1213 gsc_unregister_m2m_device(gsc); 1214 v4l2_device_unregister(&gsc->v4l2_dev); 1215 1216 vb2_dma_contig_clear_max_seg_size(&pdev->dev); 1217 1218 pm_runtime_disable(&pdev->dev); 1219 > 1220 if (!pm_runtime_status_suspended(dev)) 1221 for (i = 0; i < gsc->num_clocks; i++) 1222 clk_disable_unprepare(gsc->clock[i]); 1223 1224 pm_runtime_set_suspended(dev); 1225 1226 dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name); 1227 return 0; 1228 } 1229 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Mauro, I love your patch! Yet something to improve: [auto build test ERROR on linuxtv-media/master] [also build test ERROR on rockchip/for-next tegra/for-next v5.12 next-20210428] [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] url: https://github.com/0day-ci/linux/commits/Mauro-Carvalho-Chehab/Address-some-issues-with-PM-runtime-at-media-subsystem/20210428-225742 base: git://linuxtv.org/media_tree.git master config: ia64-allmodconfig (attached as .config) compiler: ia64-linux-gcc (GCC) 9.3.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/0day-ci/linux/commit/b6dba4aea621c15b0aa6f92e548c74cd6994eb20 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mauro-Carvalho-Chehab/Address-some-issues-with-PM-runtime-at-media-subsystem/20210428-225742 git checkout b6dba4aea621c15b0aa6f92e548c74cd6994eb20 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=ia64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/media/platform/exynos-gsc/gsc-core.c: In function 'gsc_remove': >> drivers/media/platform/exynos-gsc/gsc-core.c:1220:35: error: 'dev' undeclared (first use in this function); did you mean 'pdev'? 1220 | if (!pm_runtime_status_suspended(dev)) | ^~~ | pdev drivers/media/platform/exynos-gsc/gsc-core.c:1220:35: note: each undeclared identifier is reported only once for each function it appears in vim +1220 drivers/media/platform/exynos-gsc/gsc-core.c 1207 1208 static int gsc_remove(struct platform_device *pdev) 1209 { 1210 struct gsc_dev *gsc = platform_get_drvdata(pdev); 1211 int i; 1212 1213 gsc_unregister_m2m_device(gsc); 1214 v4l2_device_unregister(&gsc->v4l2_dev); 1215 1216 vb2_dma_contig_clear_max_seg_size(&pdev->dev); 1217 1218 pm_runtime_disable(&pdev->dev); 1219 > 1220 if (!pm_runtime_status_suspended(dev)) 1221 for (i = 0; i < gsc->num_clocks; i++) 1222 clk_disable_unprepare(gsc->clock[i]); 1223 1224 pm_runtime_set_suspended(dev); 1225 1226 dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name); 1227 return 0; 1228 } 1229 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c index 9f41c2e7097a..8b943075c503 100644 --- a/drivers/media/platform/exynos-gsc/gsc-core.c +++ b/drivers/media/platform/exynos-gsc/gsc-core.c @@ -1210,18 +1210,19 @@ static int gsc_remove(struct platform_device *pdev) struct gsc_dev *gsc = platform_get_drvdata(pdev); int i; - pm_runtime_get_sync(&pdev->dev); - gsc_unregister_m2m_device(gsc); v4l2_device_unregister(&gsc->v4l2_dev); vb2_dma_contig_clear_max_seg_size(&pdev->dev); - for (i = 0; i < gsc->num_clocks; i++) - clk_disable_unprepare(gsc->clock[i]); - pm_runtime_put_noidle(&pdev->dev); pm_runtime_disable(&pdev->dev); + if (!pm_runtime_status_suspended(dev)) + for (i = 0; i < gsc->num_clocks; i++) + clk_disable_unprepare(gsc->clock[i]); + + pm_runtime_set_suspended(dev); + dev_dbg(&pdev->dev, "%s driver unloaded\n", pdev->name); return 0; }
Calling pm_runtime_get_sync() at driver's removal time is not needed, as this will resume PM runtime. Also, the PM runtime code at pm_runtime_disable() already calls it, if it detects the need. So, change the logic in order to disable PM runtime earlier. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- drivers/media/platform/exynos-gsc/gsc-core.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)