Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM
@ 2026-10-29 16:30 Frank.Li
  2026-10-29 16:32 ` ✗ LGCI.VerificationFailed: failure for series starting with [1/1] " Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Frank.Li @ 2026-10-29 16:30 UTC (permalink / raw)
  Cc: Frank Li, Rafael J. Wysocki, Greg Kroah-Hartman,
	Andrzej Kacprowski, Karol Wachowski, Oded Gabbay, Jani Nikula,
	Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Matthew Brost,
	Thomas Hellstrom, David Airlie, Simona Vetter, Alex Elder,
	Will Deacon, Robin Murphy, Joerg Roedel, Rob Clark, Sakari Ailus,
	Mauro Carvalho Chehab, Guenter Roeck, Guan-Yu Lin, Mathias Nyman,
	linux-pm, linux-usb, dri-devel, intel-gfx, intel-xe, linux-hwmon,
	linux-arm-kernel, iommu, linux-arm-msm, linux-media,
	linux-staging, netdev, imx, Rob Herring

From: Frank Li <Frank.Li@nxp.com>

When CONFIG_PM is not enabled, all devices runtime PM state should be
treated as active.

__pm_runtime_resume() returns 1 (called by pm_runtime_get()).
pm_runtime_get_if_active() is the try-and-get version of pm_runtime_get().
stub pm_runtime_active() also returns true. So pm_runtime_get_if_active()
should return the same value as the stub pm_runtime_get(), which is 1.

Analysis of all callers and their behavior with old (-EINVAL) vs new (1):

Pattern A: if (!pm_runtime_get_if_active(dev)) -- no impact
  Both -EINVAL and 1 are non-zero, so !ret is false in both cases.
  Callers: drivers/accel/ethosu/ethosu_perfmon.c,
           drivers/gpu/drm/msm/adreno/a6xx_gmu.c,
           drivers/gpu/drm/msm/msm_perfcntr.c,
           drivers/gpu/drm/v3d/v3d_mmu.c,
           drivers/gpu/drm/v3d/v3d_perfmon.c (x4),
           drivers/media/i2c/gc08a3.c gc05a2.c og0ve1b.c ov6211.c,
           drivers/media/i2c/ccs/ccs-core.c s5kjn1.c lm3560.c (x2),
           drivers/media/i2c/s5k3m5.c thp7312.c imx283.c ov64a40.c,
           drivers/media/pci/intel/ipu6/ipu6-buttress.c,
           sound/hda/core/device.c

Pattern B: if (!ret) after get -- no impact
  Both -EINVAL and 1 are non-zero, !ret is false in both cases.
  drivers/gpu/drm/amd/pm/amdgpu_pm.c (comment says "allow access"
    in kernels without CONFIG_PM), drivers/pci/pci.c

Pattern C: ret > 0 / ret <= 0 / ret != 1 checks -- FIXED
  drivers/usb/core/offload.c: checks (!= 1), old -EINVAL caused
    -EBUSY even with !CONFIG_PM. Fixed: now returns 1, proceeds.
  drivers/accel/ivpu/ivpu_job.c: drm_WARN_ON(<= 0), old -EINVAL
    spuriously triggered WARN. Fixed: 1 > 0, no warn.
  drivers/gpu/drm/i915/intel_runtime_pm.c: checks (<= 0), old
    -EINVAL triggered error path. Fixed: 1 > 0, correct path.
  drivers/accel/ivpu/ivpu_sysfs.c: (> 0), old skipped freq read.
    Fixed: proceeds correctly without CONFIG_PM.
  drivers/gpu/drm/xe/xe_pm.c: wraps (> 0), all xe callers
    (xe_bo.c, xe_shrinker.c, xe_vsec.c, xe_ggtt.c, xe_guc_ct.c,
    xe_pxp.c) now correctly treat !CONFIG_PM as active.
  drivers/net/ipa/ipa_smp2p.c: power_on = (> 0), now correctly true.
  drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c: (> 0), now correctly
    executes stall register update.
  drivers/staging/media/ipu7/ipu7-buttress.c: active (<= 0) early
    return now skipped, correctly proceeds.

Pattern D: explicit -EINVAL check
  drivers/hwmon/prom21-xhci.c: checks (> 0) then (== -EINVAL).
    Old: took -EINVAL fallback. New: takes (> 0) fast path.
    Both succeed when CONFIG_PM is disabled; functionally equivalent.
  drivers/hwmon/eic7700-pvt.c: call is guarded by IS_ENABLED(CONFIG_PM),
    stub is never reached. No impact.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
Cc: Karol Wachowski <karol.wachowski@linux.intel.com>
Cc: Oded Gabbay <ogabbay@kernel.org>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Tvrtko Ursulin <tursulin@ursulin.net>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: "Thomas Hellstrom" <thomas.hellstrom@linux.intel.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: Alex Elder <elder@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: "Joerg Roedel" <joro@8bytes.org>
Cc: Rob Clark <robin.clark@oss.qualcomm.com>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Guan-Yu Lin <guanyulin@google.com>
Cc: Mathias Nyman <mathias.nyman@linux.intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-usb@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
Cc: linux-hwmon@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: iommu@lists.linux.dev
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: linux-staging@lists.linux.dev
Cc: netdev@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: Rob Herring (Arm) <robh@kernel.org>
---
 include/linux/pm_runtime.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
index 64921b10ac74f..de9e7518ecef2 100644
--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -280,7 +280,7 @@ static inline int pm_runtime_get_if_in_use(struct device *dev)
 }
 static inline int pm_runtime_get_if_active(struct device *dev)
 {
-	return -EINVAL;
+	return 1;
 }
 static inline int __pm_runtime_set_status(struct device *dev,
 					    unsigned int status) { return 0; }
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* ✗ LGCI.VerificationFailed: failure for series starting with [1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM
  2026-10-29 16:30 [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM Frank.Li
@ 2026-10-29 16:32 ` Patchwork
  2026-10-29 18:11 ` [PATCH 1/1] " Alex Elder
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2026-10-29 16:32 UTC (permalink / raw)
  To: frank.li; +Cc: intel-xe

== Series Details ==

Series: series starting with [1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM
URL   : https://patchwork.freedesktop.org/series/177176/
State : failure

== Summary ==

Series author address 'frank.li@oss.nxp.com' is not on the allowlist, which prevents CI from being automatically triggered.
If you want CI to run for this series, ask Patchwork project owners to click 'retest' on the series in Patchwork.
Exception occurred during validation, bailing out!
Build URL: http://intel-gfx-ci-public.igk.intel.com:8080/job/xe_pw_trigger/1326684/ (on master)



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM
  2026-10-29 16:30 [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM Frank.Li
  2026-10-29 16:32 ` ✗ LGCI.VerificationFailed: failure for series starting with [1/1] " Patchwork
@ 2026-10-29 18:11 ` Alex Elder
  2026-10-29 18:59 ` Dan Carpenter
  2026-10-30  8:57 ` Sakari Ailus
  3 siblings, 0 replies; 5+ messages in thread
From: Alex Elder @ 2026-10-29 18:11 UTC (permalink / raw)
  To: Frank.Li
  Cc: Frank Li, Rafael J. Wysocki, Greg Kroah-Hartman,
	Andrzej Kacprowski, Karol Wachowski, Oded Gabbay, Jani Nikula,
	Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Matthew Brost,
	Thomas Hellstrom, David Airlie, Simona Vetter, Alex Elder,
	Will Deacon, Robin Murphy, Joerg Roedel, Rob Clark, Sakari Ailus,
	Mauro Carvalho Chehab, Guenter Roeck, Guan-Yu Lin, Mathias Nyman,
	linux-pm, linux-usb, dri-devel, intel-gfx, intel-xe, linux-hwmon,
	linux-arm-kernel, iommu, linux-arm-msm, linux-media,
	linux-staging, netdev, imx, Rob Herring

On 10/29/26 11:30 AM, Frank.Li@oss.nxp.com wrote:
> From: Frank Li <Frank.Li@nxp.com>
> 
> When CONFIG_PM is not enabled, all devices runtime PM state should be
> treated as active.

Should be treated as if runtime PM were enabled for the device,
and the runtime status is active.

It's a subtle distinction but the previous behavior returned
EINVAL, which means "runtime PM is disabled for the device".

Anyway, for the IPA use of this function, this looks correct.

Acked-by: Alex Elder <elder@riscstar.com>

> 
> __pm_runtime_resume() returns 1 (called by pm_runtime_get()).
> pm_runtime_get_if_active() is the try-and-get version of pm_runtime_get().
> stub pm_runtime_active() also returns true. So pm_runtime_get_if_active()
> should return the same value as the stub pm_runtime_get(), which is 1.
> 
> Analysis of all callers and their behavior with old (-EINVAL) vs new (1):
> 
> Pattern A: if (!pm_runtime_get_if_active(dev)) -- no impact
>    Both -EINVAL and 1 are non-zero, so !ret is false in both cases.
>    Callers: drivers/accel/ethosu/ethosu_perfmon.c,
>             drivers/gpu/drm/msm/adreno/a6xx_gmu.c,
>             drivers/gpu/drm/msm/msm_perfcntr.c,
>             drivers/gpu/drm/v3d/v3d_mmu.c,
>             drivers/gpu/drm/v3d/v3d_perfmon.c (x4),
>             drivers/media/i2c/gc08a3.c gc05a2.c og0ve1b.c ov6211.c,
>             drivers/media/i2c/ccs/ccs-core.c s5kjn1.c lm3560.c (x2),
>             drivers/media/i2c/s5k3m5.c thp7312.c imx283.c ov64a40.c,
>             drivers/media/pci/intel/ipu6/ipu6-buttress.c,
>             sound/hda/core/device.c
> 
> Pattern B: if (!ret) after get -- no impact
>    Both -EINVAL and 1 are non-zero, !ret is false in both cases.
>    drivers/gpu/drm/amd/pm/amdgpu_pm.c (comment says "allow access"
>      in kernels without CONFIG_PM), drivers/pci/pci.c
> 
> Pattern C: ret > 0 / ret <= 0 / ret != 1 checks -- FIXED
>    drivers/usb/core/offload.c: checks (!= 1), old -EINVAL caused
>      -EBUSY even with !CONFIG_PM. Fixed: now returns 1, proceeds.
>    drivers/accel/ivpu/ivpu_job.c: drm_WARN_ON(<= 0), old -EINVAL
>      spuriously triggered WARN. Fixed: 1 > 0, no warn.
>    drivers/gpu/drm/i915/intel_runtime_pm.c: checks (<= 0), old
>      -EINVAL triggered error path. Fixed: 1 > 0, correct path.
>    drivers/accel/ivpu/ivpu_sysfs.c: (> 0), old skipped freq read.
>      Fixed: proceeds correctly without CONFIG_PM.
>    drivers/gpu/drm/xe/xe_pm.c: wraps (> 0), all xe callers
>      (xe_bo.c, xe_shrinker.c, xe_vsec.c, xe_ggtt.c, xe_guc_ct.c,
>      xe_pxp.c) now correctly treat !CONFIG_PM as active.
>    drivers/net/ipa/ipa_smp2p.c: power_on = (> 0), now correctly true.
>    drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c: (> 0), now correctly
>      executes stall register update.
>    drivers/staging/media/ipu7/ipu7-buttress.c: active (<= 0) early
>      return now skipped, correctly proceeds.
> 
> Pattern D: explicit -EINVAL check
>    drivers/hwmon/prom21-xhci.c: checks (> 0) then (== -EINVAL).
>      Old: took -EINVAL fallback. New: takes (> 0) fast path.
>      Both succeed when CONFIG_PM is disabled; functionally equivalent.
>    drivers/hwmon/eic7700-pvt.c: call is guarded by IS_ENABLED(CONFIG_PM),
>      stub is never reached. No impact.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
> Cc: Karol Wachowski <karol.wachowski@linux.intel.com>
> Cc: Oded Gabbay <ogabbay@kernel.org>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Tvrtko Ursulin <tursulin@ursulin.net>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: "Thomas Hellstrom" <thomas.hellstrom@linux.intel.com>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: Alex Elder <elder@kernel.org>
> Cc: Will Deacon <will@kernel.org>
> Cc: Robin Murphy <robin.murphy@arm.com>
> Cc: "Joerg Roedel" <joro@8bytes.org>
> Cc: Rob Clark <robin.clark@oss.qualcomm.com>
> Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Guan-Yu Lin <guanyulin@google.com>
> Cc: Mathias Nyman <mathias.nyman@linux.intel.com>
> Cc: linux-pm@vger.kernel.org
> Cc: linux-usb@vger.kernel.org
> Cc: dri-devel@lists.freedesktop.org
> Cc: intel-gfx@lists.freedesktop.org
> Cc: intel-xe@lists.freedesktop.org
> Cc: linux-hwmon@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: iommu@lists.linux.dev
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-staging@lists.linux.dev
> Cc: netdev@vger.kernel.org
> Cc: imx@lists.linux.dev
> Cc: Rob Herring (Arm) <robh@kernel.org>
> ---
>   include/linux/pm_runtime.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
> index 64921b10ac74f..de9e7518ecef2 100644
> --- a/include/linux/pm_runtime.h
> +++ b/include/linux/pm_runtime.h
> @@ -280,7 +280,7 @@ static inline int pm_runtime_get_if_in_use(struct device *dev)
>   }
>   static inline int pm_runtime_get_if_active(struct device *dev)
>   {
> -	return -EINVAL;
> +	return 1;
>   }
>   static inline int __pm_runtime_set_status(struct device *dev,
>   					    unsigned int status) { return 0; }


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM
  2026-10-29 16:30 [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM Frank.Li
  2026-10-29 16:32 ` ✗ LGCI.VerificationFailed: failure for series starting with [1/1] " Patchwork
  2026-10-29 18:11 ` [PATCH 1/1] " Alex Elder
@ 2026-10-29 18:59 ` Dan Carpenter
  2026-10-30  8:57 ` Sakari Ailus
  3 siblings, 0 replies; 5+ messages in thread
From: Dan Carpenter @ 2026-10-29 18:59 UTC (permalink / raw)
  To: Frank.Li
  Cc: Frank Li, Rafael J. Wysocki, Greg Kroah-Hartman,
	Andrzej Kacprowski, Karol Wachowski, Oded Gabbay, Jani Nikula,
	Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Matthew Brost,
	Thomas Hellstrom, David Airlie, Simona Vetter, Alex Elder,
	Will Deacon, Robin Murphy, Joerg Roedel, Rob Clark, Sakari Ailus,
	Mauro Carvalho Chehab, Guenter Roeck, Guan-Yu Lin, Mathias Nyman,
	linux-pm, linux-usb, dri-devel, intel-gfx, intel-xe, linux-hwmon,
	linux-arm-kernel, iommu, linux-arm-msm, linux-media,
	linux-staging, netdev, imx, Rob Herring

On Thu, Oct 29, 2026 at 12:30:37PM -0400, Frank.Li@oss.nxp.com wrote:

> Pattern C: ret > 0 / ret <= 0 / ret != 1 checks -- FIXED
>   drivers/usb/core/offload.c: checks (!= 1), old -EINVAL caused
>     -EBUSY even with !CONFIG_PM. Fixed: now returns 1, proceeds.
>   drivers/accel/ivpu/ivpu_job.c: drm_WARN_ON(<= 0), old -EINVAL
>     spuriously triggered WARN. Fixed: 1 > 0, no warn.
>   drivers/gpu/drm/i915/intel_runtime_pm.c: checks (<= 0), old
>     -EINVAL triggered error path. Fixed: 1 > 0, correct path.
>   drivers/accel/ivpu/ivpu_sysfs.c: (> 0), old skipped freq read.
>     Fixed: proceeds correctly without CONFIG_PM.
>   drivers/gpu/drm/xe/xe_pm.c: wraps (> 0), all xe callers
>     (xe_bo.c, xe_shrinker.c, xe_vsec.c, xe_ggtt.c, xe_guc_ct.c,
>     xe_pxp.c) now correctly treat !CONFIG_PM as active.
>   drivers/net/ipa/ipa_smp2p.c: power_on = (> 0), now correctly true.
>   drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c: (> 0), now correctly
>     executes stall register update.
>   drivers/staging/media/ipu7/ipu7-buttress.c: active (<= 0) early
>     return now skipped, correctly proceeds.

Pattern C is mostly bugs so this patch should have a Fixes tag since
it fixes bugs.

regards,
dan carpenter



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM
  2026-10-29 16:30 [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM Frank.Li
                   ` (2 preceding siblings ...)
  2026-10-29 18:59 ` Dan Carpenter
@ 2026-10-30  8:57 ` Sakari Ailus
  3 siblings, 0 replies; 5+ messages in thread
From: Sakari Ailus @ 2026-10-30  8:57 UTC (permalink / raw)
  To: Frank.Li
  Cc: Frank Li, Rafael J. Wysocki, Greg Kroah-Hartman,
	Andrzej Kacprowski, Karol Wachowski, Oded Gabbay, Jani Nikula,
	Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Matthew Brost,
	Thomas Hellstrom, David Airlie, Simona Vetter, Alex Elder,
	Will Deacon, Robin Murphy, Joerg Roedel, Rob Clark,
	Mauro Carvalho Chehab, Guenter Roeck, Guan-Yu Lin, Mathias Nyman,
	linux-pm, linux-usb, dri-devel, intel-gfx, intel-xe, linux-hwmon,
	linux-arm-kernel, iommu, linux-arm-msm, linux-media,
	linux-staging, netdev, imx, Rob Herring

Hi Frank,

Thanks for the patch.

On Thu, Oct 29, 2026 at 12:30:37PM -0400, Frank.Li@oss.nxp.com wrote:
> From: Frank Li <Frank.Li@nxp.com>
> 
> When CONFIG_PM is not enabled, all devices runtime PM state should be
> treated as active.
> 
> __pm_runtime_resume() returns 1 (called by pm_runtime_get()).
> pm_runtime_get_if_active() is the try-and-get version of pm_runtime_get().
> stub pm_runtime_active() also returns true. So pm_runtime_get_if_active()
> should return the same value as the stub pm_runtime_get(), which is 1.

Shouldn't the same change be done to pm_runtime_get_if_in_use()? It's
otherwise the same, except that it requires also the use count to be
non-zero.

-- 
Regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-10-30  8:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-29 16:30 [PATCH 1/1] PM: runtime: change stub pm_runtime_get_if_active() return 1 when !CONFIG_PM Frank.Li
2026-10-29 16:32 ` ✗ LGCI.VerificationFailed: failure for series starting with [1/1] " Patchwork
2026-10-29 18:11 ` [PATCH 1/1] " Alex Elder
2026-10-29 18:59 ` Dan Carpenter
2026-10-30  8:57 ` Sakari Ailus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox