* [PATCH] media: st-delta: Fix PM disable depth imbalance in delta_probe
@ 2022-01-05 11:55 Miaoqian Lin
2022-01-05 21:05 ` kernel test robot
2022-03-01 3:12 ` [PATCH v2] " Miaoqian Lin
0 siblings, 2 replies; 7+ messages in thread
From: Miaoqian Lin @ 2022-01-05 11:55 UTC (permalink / raw)
Cc: linmq006, Hugues Fruchet, Mauro Carvalho Chehab, Peter Griffin,
linux-media, linux-kernel
The pm_runtime_enable will increase power disable depth.
If the probe fails, we should use pm_runtime_disable() to balance
pm_runtime_enable().
Fixes: f386509 ("[media] st-delta: STiH4xx multi-format video decoder v4l2 driver")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
---
drivers/media/platform/sti/delta/delta-v4l2.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/media/platform/sti/delta/delta-v4l2.c b/drivers/media/platform/sti/delta/delta-v4l2.c
index c887a31ebb54..dbcfd0484da4 100644
--- a/drivers/media/platform/sti/delta/delta-v4l2.c
+++ b/drivers/media/platform/sti/delta/delta-v4l2.c
@@ -1898,6 +1898,8 @@ static int delta_probe(struct platform_device *pdev)
destroy_workqueue(delta->work_queue);
err_v4l2:
v4l2_device_unregister(&delta->v4l2_dev);
+disable_pm_runtime:
+ pm_runtime_disable(dev);
err:
return ret;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] media: st-delta: Fix PM disable depth imbalance in delta_probe
2022-01-05 11:55 [PATCH] media: st-delta: Fix PM disable depth imbalance in delta_probe Miaoqian Lin
@ 2022-01-05 21:05 ` kernel test robot
2022-03-01 3:12 ` [PATCH v2] " Miaoqian Lin
1 sibling, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-01-05 21:05 UTC (permalink / raw)
To: Miaoqian Lin; +Cc: llvm, kbuild-all
Hi Miaoqian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on media-tree/master]
[also build test WARNING on v5.16-rc8 next-20220105]
[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/Miaoqian-Lin/media-st-delta-Fix-PM-disable-depth-imbalance-in-delta_probe/20220105-195600
base: git://linuxtv.org/media_tree.git master
config: riscv-randconfig-r022-20220105 (https://download.01.org/0day-ci/archive/20220106/202201060446.2MV9VJaE-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d5b6e30ed3acad794dd0aec400e617daffc6cc3d)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/df377b6adc1cca5963348f9ac16f033e5da299cb
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Miaoqian-Lin/media-st-delta-Fix-PM-disable-depth-imbalance-in-delta_probe/20220105-195600
git checkout df377b6adc1cca5963348f9ac16f033e5da299cb
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/media/platform/sti/bdisp/ drivers/media/platform/sti/delta/ drivers/media/platform/sti/hva/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/media/platform/sti/delta/delta-v4l2.c:1901:1: warning: unused label 'disable_pm_runtime' [-Wunused-label]
disable_pm_runtime:
^~~~~~~~~~~~~~~~~~~
1 warning generated.
vim +/disable_pm_runtime +1901 drivers/media/platform/sti/delta/delta-v4l2.c
1812
1813 static int delta_probe(struct platform_device *pdev)
1814 {
1815 struct delta_dev *delta;
1816 struct device *dev = &pdev->dev;
1817 int ret;
1818
1819 delta = devm_kzalloc(dev, sizeof(*delta), GFP_KERNEL);
1820 if (!delta) {
1821 ret = -ENOMEM;
1822 goto err;
1823 }
1824
1825 delta->dev = dev;
1826 delta->pdev = pdev;
1827 platform_set_drvdata(pdev, delta);
1828
1829 mutex_init(&delta->lock);
1830
1831 /* get clock resources */
1832 delta->clk_delta = devm_clk_get(dev, "delta");
1833 if (IS_ERR(delta->clk_delta)) {
1834 dev_dbg(dev, "%s can't get delta clock\n", DELTA_PREFIX);
1835 delta->clk_delta = NULL;
1836 }
1837
1838 delta->clk_st231 = devm_clk_get(dev, "delta-st231");
1839 if (IS_ERR(delta->clk_st231)) {
1840 dev_dbg(dev, "%s can't get delta-st231 clock\n", DELTA_PREFIX);
1841 delta->clk_st231 = NULL;
1842 }
1843
1844 delta->clk_flash_promip = devm_clk_get(dev, "delta-flash-promip");
1845 if (IS_ERR(delta->clk_flash_promip)) {
1846 dev_dbg(dev, "%s can't get delta-flash-promip clock\n",
1847 DELTA_PREFIX);
1848 delta->clk_flash_promip = NULL;
1849 }
1850
1851 /* init pm_runtime used for power management */
1852 pm_runtime_set_autosuspend_delay(dev, DELTA_HW_AUTOSUSPEND_DELAY_MS);
1853 pm_runtime_use_autosuspend(dev);
1854 pm_runtime_set_suspended(dev);
1855 pm_runtime_enable(dev);
1856
1857 /* init firmware ipc channel */
1858 ret = delta_ipc_init(delta);
1859 if (ret) {
1860 dev_err(delta->dev, "%s failed to initialize firmware ipc channel\n",
1861 DELTA_PREFIX);
1862 goto err;
1863 }
1864
1865 /* register all available decoders */
1866 register_decoders(delta);
1867
1868 /* register all supported formats */
1869 register_formats(delta);
1870
1871 /* register on V4L2 */
1872 ret = v4l2_device_register(dev, &delta->v4l2_dev);
1873 if (ret) {
1874 dev_err(delta->dev, "%s failed to register V4L2 device\n",
1875 DELTA_PREFIX);
1876 goto err;
1877 }
1878
1879 delta->work_queue = create_workqueue(DELTA_NAME);
1880 if (!delta->work_queue) {
1881 dev_err(delta->dev, "%s failed to allocate work queue\n",
1882 DELTA_PREFIX);
1883 ret = -ENOMEM;
1884 goto err_v4l2;
1885 }
1886
1887 /* register device */
1888 ret = delta_register_device(delta);
1889 if (ret)
1890 goto err_work_queue;
1891
1892 dev_info(dev, "%s %s registered as /dev/video%d\n",
1893 DELTA_PREFIX, delta->vdev->name, delta->vdev->num);
1894
1895 return 0;
1896
1897 err_work_queue:
1898 destroy_workqueue(delta->work_queue);
1899 err_v4l2:
1900 v4l2_device_unregister(&delta->v4l2_dev);
> 1901 disable_pm_runtime:
1902 pm_runtime_disable(dev);
1903 err:
1904 return ret;
1905 }
1906
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] media: st-delta: Fix PM disable depth imbalance in delta_probe
@ 2022-01-05 21:05 ` kernel test robot
0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2022-01-05 21:05 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 5285 bytes --]
Hi Miaoqian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on media-tree/master]
[also build test WARNING on v5.16-rc8 next-20220105]
[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/Miaoqian-Lin/media-st-delta-Fix-PM-disable-depth-imbalance-in-delta_probe/20220105-195600
base: git://linuxtv.org/media_tree.git master
config: riscv-randconfig-r022-20220105 (https://download.01.org/0day-ci/archive/20220106/202201060446.2MV9VJaE-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d5b6e30ed3acad794dd0aec400e617daffc6cc3d)
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
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://github.com/0day-ci/linux/commit/df377b6adc1cca5963348f9ac16f033e5da299cb
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Miaoqian-Lin/media-st-delta-Fix-PM-disable-depth-imbalance-in-delta_probe/20220105-195600
git checkout df377b6adc1cca5963348f9ac16f033e5da299cb
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/media/platform/sti/bdisp/ drivers/media/platform/sti/delta/ drivers/media/platform/sti/hva/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/media/platform/sti/delta/delta-v4l2.c:1901:1: warning: unused label 'disable_pm_runtime' [-Wunused-label]
disable_pm_runtime:
^~~~~~~~~~~~~~~~~~~
1 warning generated.
vim +/disable_pm_runtime +1901 drivers/media/platform/sti/delta/delta-v4l2.c
1812
1813 static int delta_probe(struct platform_device *pdev)
1814 {
1815 struct delta_dev *delta;
1816 struct device *dev = &pdev->dev;
1817 int ret;
1818
1819 delta = devm_kzalloc(dev, sizeof(*delta), GFP_KERNEL);
1820 if (!delta) {
1821 ret = -ENOMEM;
1822 goto err;
1823 }
1824
1825 delta->dev = dev;
1826 delta->pdev = pdev;
1827 platform_set_drvdata(pdev, delta);
1828
1829 mutex_init(&delta->lock);
1830
1831 /* get clock resources */
1832 delta->clk_delta = devm_clk_get(dev, "delta");
1833 if (IS_ERR(delta->clk_delta)) {
1834 dev_dbg(dev, "%s can't get delta clock\n", DELTA_PREFIX);
1835 delta->clk_delta = NULL;
1836 }
1837
1838 delta->clk_st231 = devm_clk_get(dev, "delta-st231");
1839 if (IS_ERR(delta->clk_st231)) {
1840 dev_dbg(dev, "%s can't get delta-st231 clock\n", DELTA_PREFIX);
1841 delta->clk_st231 = NULL;
1842 }
1843
1844 delta->clk_flash_promip = devm_clk_get(dev, "delta-flash-promip");
1845 if (IS_ERR(delta->clk_flash_promip)) {
1846 dev_dbg(dev, "%s can't get delta-flash-promip clock\n",
1847 DELTA_PREFIX);
1848 delta->clk_flash_promip = NULL;
1849 }
1850
1851 /* init pm_runtime used for power management */
1852 pm_runtime_set_autosuspend_delay(dev, DELTA_HW_AUTOSUSPEND_DELAY_MS);
1853 pm_runtime_use_autosuspend(dev);
1854 pm_runtime_set_suspended(dev);
1855 pm_runtime_enable(dev);
1856
1857 /* init firmware ipc channel */
1858 ret = delta_ipc_init(delta);
1859 if (ret) {
1860 dev_err(delta->dev, "%s failed to initialize firmware ipc channel\n",
1861 DELTA_PREFIX);
1862 goto err;
1863 }
1864
1865 /* register all available decoders */
1866 register_decoders(delta);
1867
1868 /* register all supported formats */
1869 register_formats(delta);
1870
1871 /* register on V4L2 */
1872 ret = v4l2_device_register(dev, &delta->v4l2_dev);
1873 if (ret) {
1874 dev_err(delta->dev, "%s failed to register V4L2 device\n",
1875 DELTA_PREFIX);
1876 goto err;
1877 }
1878
1879 delta->work_queue = create_workqueue(DELTA_NAME);
1880 if (!delta->work_queue) {
1881 dev_err(delta->dev, "%s failed to allocate work queue\n",
1882 DELTA_PREFIX);
1883 ret = -ENOMEM;
1884 goto err_v4l2;
1885 }
1886
1887 /* register device */
1888 ret = delta_register_device(delta);
1889 if (ret)
1890 goto err_work_queue;
1891
1892 dev_info(dev, "%s %s registered as /dev/video%d\n",
1893 DELTA_PREFIX, delta->vdev->name, delta->vdev->num);
1894
1895 return 0;
1896
1897 err_work_queue:
1898 destroy_workqueue(delta->work_queue);
1899 err_v4l2:
1900 v4l2_device_unregister(&delta->v4l2_dev);
> 1901 disable_pm_runtime:
1902 pm_runtime_disable(dev);
1903 err:
1904 return ret;
1905 }
1906
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2] media: st-delta: Fix PM disable depth imbalance in delta_probe
2022-01-05 11:55 [PATCH] media: st-delta: Fix PM disable depth imbalance in delta_probe Miaoqian Lin
2022-01-05 21:05 ` kernel test robot
@ 2022-03-01 3:12 ` Miaoqian Lin
2022-03-07 7:35 ` Hans Verkuil
1 sibling, 1 reply; 7+ messages in thread
From: Miaoqian Lin @ 2022-03-01 3:12 UTC (permalink / raw)
To: Hugues Fruchet, Mauro Carvalho Chehab, Peter Griffin,
linux-media, linux-kernel
Cc: linmq006
The pm_runtime_enable will increase power disable depth.
If the probe fails, we should use pm_runtime_disable() to balance
pm_runtime_enable().
Fixes: f386509 ("[media] st-delta: STiH4xx multi-format video decoder v4l2 driver")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
---
changes in v2:
- remove unused label.
---
drivers/media/platform/sti/delta/delta-v4l2.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/platform/sti/delta/delta-v4l2.c b/drivers/media/platform/sti/delta/delta-v4l2.c
index c887a31ebb54..36ce0775f3f9 100644
--- a/drivers/media/platform/sti/delta/delta-v4l2.c
+++ b/drivers/media/platform/sti/delta/delta-v4l2.c
@@ -1899,6 +1899,7 @@ static int delta_probe(struct platform_device *pdev)
err_v4l2:
v4l2_device_unregister(&delta->v4l2_dev);
err:
+ pm_runtime_disable(dev);
return ret;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2] media: st-delta: Fix PM disable depth imbalance in delta_probe
2022-03-01 3:12 ` [PATCH v2] " Miaoqian Lin
@ 2022-03-07 7:35 ` Hans Verkuil
2022-03-07 8:08 ` [PATCH v3] " Miaoqian Lin
0 siblings, 1 reply; 7+ messages in thread
From: Hans Verkuil @ 2022-03-07 7:35 UTC (permalink / raw)
To: Miaoqian Lin, Hugues Fruchet, Mauro Carvalho Chehab,
Peter Griffin, linux-media, linux-kernel
Hi Miaoqian Lin,
On 3/1/22 04:12, Miaoqian Lin wrote:
> The pm_runtime_enable will increase power disable depth.
> If the probe fails, we should use pm_runtime_disable() to balance
> pm_runtime_enable().
>
> Fixes: f386509 ("[media] st-delta: STiH4xx multi-format video decoder v4l2 driver")
> Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
> ---
> changes in v2:
> - remove unused label.
> ---
> drivers/media/platform/sti/delta/delta-v4l2.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/media/platform/sti/delta/delta-v4l2.c b/drivers/media/platform/sti/delta/delta-v4l2.c
> index c887a31ebb54..36ce0775f3f9 100644
> --- a/drivers/media/platform/sti/delta/delta-v4l2.c
> +++ b/drivers/media/platform/sti/delta/delta-v4l2.c
> @@ -1899,6 +1899,7 @@ static int delta_probe(struct platform_device *pdev)
> err_v4l2:
> v4l2_device_unregister(&delta->v4l2_dev);
> err:
> + pm_runtime_disable(dev);
This isn't right. If the devm_kzalloc at the beginning fails, then it also jump
to this label, but at that time no pm_runtime_enable() has been called yet,
so this patch will just introduce another imbalance.
You *do* need a new label here (like you did in v1 of this patch), and update
the 'goto err;' instances after the call to pm_runtime_enable() to go to that
new label.
Regards,
Hans
> return ret;
> }
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3] media: st-delta: Fix PM disable depth imbalance in delta_probe
2022-03-07 7:35 ` Hans Verkuil
@ 2022-03-07 8:08 ` Miaoqian Lin
2022-03-10 16:32 ` Hugues FRUCHET - FOSS
0 siblings, 1 reply; 7+ messages in thread
From: Miaoqian Lin @ 2022-03-07 8:08 UTC (permalink / raw)
To: Hugues Fruchet, Mauro Carvalho Chehab, Peter Griffin,
linux-media, linux-kernel
Cc: linmq006
The pm_runtime_enable will decrease power disable depth.
If the probe fails, we should use pm_runtime_disable() to balance
pm_runtime_enable().
Fixes: f386509 ("[media] st-delta: STiH4xx multi-format video decoder v4l2 driver")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
---
changes in v2:
- remove unused label.
changes in v3:
- add err_pm_disable label and update related 'goto err'.
- update commit message
---
drivers/media/platform/sti/delta/delta-v4l2.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/sti/delta/delta-v4l2.c b/drivers/media/platform/sti/delta/delta-v4l2.c
index c887a31ebb54..420ad4d8df5d 100644
--- a/drivers/media/platform/sti/delta/delta-v4l2.c
+++ b/drivers/media/platform/sti/delta/delta-v4l2.c
@@ -1859,7 +1859,7 @@ static int delta_probe(struct platform_device *pdev)
if (ret) {
dev_err(delta->dev, "%s failed to initialize firmware ipc channel\n",
DELTA_PREFIX);
- goto err;
+ goto err_pm_disable;
}
/* register all available decoders */
@@ -1873,7 +1873,7 @@ static int delta_probe(struct platform_device *pdev)
if (ret) {
dev_err(delta->dev, "%s failed to register V4L2 device\n",
DELTA_PREFIX);
- goto err;
+ goto err_pm_disable;
}
delta->work_queue = create_workqueue(DELTA_NAME);
@@ -1898,6 +1898,8 @@ static int delta_probe(struct platform_device *pdev)
destroy_workqueue(delta->work_queue);
err_v4l2:
v4l2_device_unregister(&delta->v4l2_dev);
+err_pm_disable:
+ pm_runtime_disable(dev);
err:
return ret;
}
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3] media: st-delta: Fix PM disable depth imbalance in delta_probe
2022-03-07 8:08 ` [PATCH v3] " Miaoqian Lin
@ 2022-03-10 16:32 ` Hugues FRUCHET - FOSS
0 siblings, 0 replies; 7+ messages in thread
From: Hugues FRUCHET - FOSS @ 2022-03-10 16:32 UTC (permalink / raw)
To: Miaoqian Lin, Mauro Carvalho Chehab, Peter Griffin, linux-media,
linux-kernel
Hi Miaoqian Lin,
Thanks for the patch !
Acked-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
BR,
Hugues.
On 3/7/22 9:08 AM, Miaoqian Lin wrote:
> The pm_runtime_enable will decrease power disable depth.
> If the probe fails, we should use pm_runtime_disable() to balance
> pm_runtime_enable().
>
> Fixes: f386509 ("[media] st-delta: STiH4xx multi-format video decoder v4l2 driver")
> Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
> ---
> changes in v2:
> - remove unused label.
> changes in v3:
> - add err_pm_disable label and update related 'goto err'.
> - update commit message
> ---
> drivers/media/platform/sti/delta/delta-v4l2.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/sti/delta/delta-v4l2.c b/drivers/media/platform/sti/delta/delta-v4l2.c
> index c887a31ebb54..420ad4d8df5d 100644
> --- a/drivers/media/platform/sti/delta/delta-v4l2.c
> +++ b/drivers/media/platform/sti/delta/delta-v4l2.c
> @@ -1859,7 +1859,7 @@ static int delta_probe(struct platform_device *pdev)
> if (ret) {
> dev_err(delta->dev, "%s failed to initialize firmware ipc channel\n",
> DELTA_PREFIX);
> - goto err;
> + goto err_pm_disable;
> }
>
> /* register all available decoders */
> @@ -1873,7 +1873,7 @@ static int delta_probe(struct platform_device *pdev)
> if (ret) {
> dev_err(delta->dev, "%s failed to register V4L2 device\n",
> DELTA_PREFIX);
> - goto err;
> + goto err_pm_disable;
> }
>
> delta->work_queue = create_workqueue(DELTA_NAME);
> @@ -1898,6 +1898,8 @@ static int delta_probe(struct platform_device *pdev)
> destroy_workqueue(delta->work_queue);
> err_v4l2:
> v4l2_device_unregister(&delta->v4l2_dev);
> +err_pm_disable:
> + pm_runtime_disable(dev);
> err:
> return ret;
> }
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-03-10 16:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-05 11:55 [PATCH] media: st-delta: Fix PM disable depth imbalance in delta_probe Miaoqian Lin
2022-01-05 21:05 ` kernel test robot
2022-01-05 21:05 ` kernel test robot
2022-03-01 3:12 ` [PATCH v2] " Miaoqian Lin
2022-03-07 7:35 ` Hans Verkuil
2022-03-07 8:08 ` [PATCH v3] " Miaoqian Lin
2022-03-10 16:32 ` Hugues FRUCHET - FOSS
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.