Hi, On Mon, Jan 16, 2023 at 04:44:51PM +0200, Laurent Pinchart wrote: > Initializing the subdev before runtime PM means that no subdev > initialization can interact with the runtime PM framework. This can be > problematic when modifying controls, as the .s_ctrl() handler commonly > calls pm_runtime_get_if_in_use(). These code paths are not trivial, > making the driver fragile and possibly causing subtle bugs. > > To make the subdev initialization more robust, initialize runtime PM > first. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Acked-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> > --- This patch results in Error log: <stdin>:1517:2: warning: #warning syscall clone3 not implemented [-Wcpp] drivers/media/i2c/imx290.c:1090:12: error: 'imx290_runtime_suspend' defined but not used [-Werror=unused-function] 1090 | static int imx290_runtime_suspend(struct device *dev) | ^~~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/imx290.c:1082:12: error: 'imx290_runtime_resume' defined but not used [-Werror=unused-function] 1082 | static int imx290_runtime_resume(struct device *dev) if PM runtime support is disabled( alpha:allmodconfig, csky:allmodconfig, and others). Guenter --- #regzbot ^introduced 02852c01f6540 #regzbot title Build error in drivers/media/i2c/imx290.c if PM support is disabled --- # bad: [f3a2439f20d918930cc4ae8f76fe1c1afd26958f] Merge tag 'rproc-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux # good: [116b41162f8b267987ea9a73eb7e73eaa7c2cce5] Merge tag 'probes-v6.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace git bisect start 'HEAD' '116b41162f8b' # good: [d4563201f33a022fc0353033d9dfeb1606a88330] Documentation: simplify and clarify DCO contribution example language git bisect good d4563201f33a022fc0353033d9dfeb1606a88330 # bad: [bca7822cbc76b22572faf2e17ca9517b68ebeb3e] media: atomisp: ov2680: Drop MAX_FMTS define git bisect bad bca7822cbc76b22572faf2e17ca9517b68ebeb3e # bad: [27e45f2e59c9db2c83ed67775e911c8a3c776db2] media: ti: omap4iss: Use media_pipeline_for_each_entity() git bisect bad 27e45f2e59c9db2c83ed67775e911c8a3c776db2 # good: [8a54644571fed484d55b3807f25f64cba8a9ca77] media: subdev: Require code change to enable [GS]_ROUTING git bisect good 8a54644571fed484d55b3807f25f64cba8a9ca77 # good: [8508455961d5a9e8907bcfd8dcd58f19d9b6ce47] media: i2c: imx219: Split common registers from mode tables git bisect good 8508455961d5a9e8907bcfd8dcd58f19d9b6ce47 # good: [10591fe63691bd8199d5e7244029cc065959ffc9] media: i2c: imx290: Rename, extend and expand usage of imx290_pixfmt git bisect good 10591fe63691bd8199d5e7244029cc065959ffc9 # bad: [e14d3ac81bd2264edc76bf5796305b2dfea44487] media: i2c: Add driver for OmniVision OV8858 git bisect bad e14d3ac81bd2264edc76bf5796305b2dfea44487 # bad: [7d399658f7c666ead4bc3dbe88944bb8ea7746ca] media: i2c: imx290: Configure data lanes at start time git bisect bad 7d399658f7c666ead4bc3dbe88944bb8ea7746ca # bad: [02852c01f65402e2fe4a8a5fe5a0b641f245b529] media: i2c: imx290: Initialize runtime PM before subdev git bisect bad 02852c01f65402e2fe4a8a5fe5a0b641f245b529 # good: [a8c3e0c1bf1e97b5ee094951ed0f1e57e3b378c7] media: i2c: imx290: Use runtime PM autosuspend git bisect good a8c3e0c1bf1e97b5ee094951ed0f1e57e3b378c7 # first bad commit: [02852c01f65402e2fe4a8a5fe5a0b641f245b529] media: i2c: imx290: Initialize runtime PM before subdev