Re: [PATCH v3 1/4] drm/imagination: don't gate the runtime PM callbacks on drm_dev_enter()

From: Gyeyoung Baek

Date: Mon Oct 12 2026 - 23:49:09 EST


Hi Ryan,

> int
> @@ -398,33 +397,24 @@ pvr_power_device_resume(struct device *dev)
> struct platform_device *plat_dev = to_platform_device(dev);
> struct drm_device *drm_dev = platform_get_drvdata(plat_dev);
> struct pvr_device *pvr_dev = to_pvr_device(drm_dev);
> - int idx;
> int err;
>
> - if (!drm_dev_enter(drm_dev, &idx))
> - return -EIO;
> + if (pvr_dev->lost)
> + return 0;
>

'lost' looks protected by reset_sem, but it's read here without the
lock. Shouldn't this at least be READ_ONCE()?

> err = pvr_dev->device_data->pwr_ops->power_on(pvr_dev);
> if (err)
> - goto err_drm_dev_exit;
> + return err;
>
> if (READ_ONCE(pvr_dev->fw_dev.initialised)) {
> err = pvr_power_fw_enable(pvr_dev, true);
> - if (err)
> - goto err_power_off;
> + if (err) {
> + pvr_dev->device_data->pwr_ops->power_off(pvr_dev);
> + return err;
> + }
> }
>
> - drm_dev_exit(idx);
> -
> return 0;
> -
> -err_power_off:
> - pvr_dev->device_data->pwr_ops->power_off(pvr_dev);
> -
> -err_drm_dev_exit:
> - drm_dev_exit(idx);
> -
> - return err;
> }
>
> int
>
> --
> 2.55.0
>

--
Thanks,
Gyeyoung