> -----Original Message----- > From: Edward O'Callaghan [mailto:[email protected]] > Sent: Saturday, September 03, 2016 1:08 AM > To: Alex Deucher; [email protected] > Cc: Deucher, Alexander > Subject: Re: [PATCH 2/2] drm/radeon: handle runtime pm in fbcon (v2) > > > > On 09/03/2016 01:18 AM, Alex Deucher wrote: > > Ported from nouveau. > > > > v2: re-enable runtime autosuspend in the error case > > > > Signed-off-by: Alex Deucher <[email protected]> > > --- > > drivers/gpu/drm/radeon/radeon_fb.c | 28 > ++++++++++++++++++++++++++++ > > 1 file changed, 28 insertions(+) > > > > diff --git a/drivers/gpu/drm/radeon/radeon_fb.c > b/drivers/gpu/drm/radeon/radeon_fb.c > > index 0e3143a..6b2537d 100644 > > --- a/drivers/gpu/drm/radeon/radeon_fb.c > > +++ b/drivers/gpu/drm/radeon/radeon_fb.c > > @@ -26,6 +26,7 @@ > > #include <linux/module.h> > > #include <linux/slab.h> > > #include <linux/fb.h> > > +#include <linux/pm_runtime.h> > > > > #include <drm/drmP.h> > > #include <drm/drm_crtc.h> > > @@ -47,8 +48,35 @@ struct radeon_fbdev { > > struct radeon_device *rdev; > > }; > > > > +static int > > +radeonfb_open(struct fb_info *info, int user) > > +{ > > + struct radeon_fbdev *rfbdev = info->par; > > + struct radeon_device *rdev = rfbdev->rdev; > > + int ret = pm_runtime_get_sync(rdev->ddev->dev); > > + if (ret < 0 && ret != -EACCES) { > > + pm_runtime_mark_last_busy(rdev->ddev->dev); > > + pm_runtime_put_autosuspend(rdev->ddev->dev); > > + return ret; > > + } > > + return 0; > > Hi Alex, > > Minor question - in the case of (ret == -EACCES) is that still regarded > as successful in the context of radeonfb_open()'s call? > > If it indeed is then,
Yes, -EACCES just means runtime pm is disabled so there is no power up of the device necessary. Alex > > Acked-by: Edward O'Callaghan <[email protected]> > > Thanks for your time, > Edward. > > > +} > > + > > +static int > > +radeonfb_release(struct fb_info *info, int user) > > +{ > > + struct radeon_fbdev *rfbdev = info->par; > > + struct radeon_device *rdev = rfbdev->rdev; > > + > > + pm_runtime_mark_last_busy(rdev->ddev->dev); > > + pm_runtime_put_autosuspend(rdev->ddev->dev); > > + return 0; > > +} > > + > > static struct fb_ops radeonfb_ops = { > > .owner = THIS_MODULE, > > + .fb_open = radeonfb_open, > > + .fb_release = radeonfb_release, > > .fb_check_var = drm_fb_helper_check_var, > > .fb_set_par = drm_fb_helper_set_par, > > .fb_fillrect = drm_fb_helper_cfb_fillrect, > > _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
