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