Message ID | 20230403160735.1211468-1-robdclark@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/vblank: Simplify drm_dev_has_vblank() | expand |
On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > What does vblank have to do with num_crtcs? Well, this was technically > correct, but you'd have to go look at where num_crtcs is initialized to > understand why. Lets just replace it with the simpler and more obvious > check. > > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/drm_vblank.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c > index 877e2067534f..ad34c235d853 100644 > --- a/drivers/gpu/drm/drm_vblank.c > +++ b/drivers/gpu/drm/drm_vblank.c > @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init); > */ > bool drm_dev_has_vblank(const struct drm_device *dev) > { > - return dev->num_crtcs != 0; > + return !!dev->vblank; The compiler knows how to turn things into a boolean. Or I guess if we want to be a bit more explicit we could write this as return dev->vblank != NULL; but IIRC that will make checkpatch complain because of someone's personal taste. > } > EXPORT_SYMBOL(drm_dev_has_vblank); > > -- > 2.39.2
On 4/3/23 09:23, Ville Syrjälä wrote: > On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote: >> From: Rob Clark <robdclark@chromium.org> >> >> What does vblank have to do with num_crtcs? Well, this was technically >> correct, but you'd have to go look at where num_crtcs is initialized to >> understand why. Lets just replace it with the simpler and more obvious >> check. >> >> Signed-off-by: Rob Clark <robdclark@chromium.org> >> --- >> drivers/gpu/drm/drm_vblank.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c >> index 877e2067534f..ad34c235d853 100644 >> --- a/drivers/gpu/drm/drm_vblank.c >> +++ b/drivers/gpu/drm/drm_vblank.c >> @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init); >> */ >> bool drm_dev_has_vblank(const struct drm_device *dev) >> { >> - return dev->num_crtcs != 0; >> + return !!dev->vblank; > > The compiler knows how to turn things into a boolean. >> Or I guess if we want to be a bit more explicit we could > write this as > return dev->vblank != NULL; > but IIRC that will make checkpatch complain because of > someone's personal taste. checkpatch isn't an absolute thing. :)
On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > What does vblank have to do with num_crtcs? Well, this was technically > correct, but you'd have to go look at where num_crtcs is initialized to > understand why. Lets just replace it with the simpler and more obvious > check. If you want to fix this, then I think the right fix is to rename num_crtcs to be something like num_vblank_crtcs. It's a historical accident back when vblanks without kms was a thing. Plan B is someone gets really busy and fixes up the entire vblank mess and moves it into drm_crtc struct. Now that the dri1 drivers are gone we could indeed do that. Or maybe instead a patch to improve the kerneldoc for drm_dev->num_crtc? -Daniel > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- > drivers/gpu/drm/drm_vblank.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c > index 877e2067534f..ad34c235d853 100644 > --- a/drivers/gpu/drm/drm_vblank.c > +++ b/drivers/gpu/drm/drm_vblank.c > @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init); > */ > bool drm_dev_has_vblank(const struct drm_device *dev) > { > - return dev->num_crtcs != 0; > + return !!dev->vblank; > } > EXPORT_SYMBOL(drm_dev_has_vblank); > > -- > 2.39.2 >
On Tue, Apr 04, 2023 at 10:46:00PM +0200, Daniel Vetter wrote: > On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote: > > From: Rob Clark <robdclark@chromium.org> > > > > What does vblank have to do with num_crtcs? Well, this was technically > > correct, but you'd have to go look at where num_crtcs is initialized to > > understand why. Lets just replace it with the simpler and more obvious > > check. > > If you want to fix this, then I think the right fix is to rename num_crtcs > to be something like num_vblank_crtcs. It's a historical accident back > when vblanks without kms was a thing. > > Plan B is someone gets really busy and fixes up the entire vblank mess and > moves it into drm_crtc struct. Now that the dri1 drivers are gone we could > indeed do that. And easy first step could to simply wrap all the naked &dev->vblank[drm_crtc_index()] things into a function call with some cocci/etc. That way most of the vblank code doesn't need to care where that thing actually lives.
On Wed, Apr 05, 2023 at 12:00:23AM +0300, Ville Syrjälä wrote: > On Tue, Apr 04, 2023 at 10:46:00PM +0200, Daniel Vetter wrote: > > On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote: > > > From: Rob Clark <robdclark@chromium.org> > > > > > > What does vblank have to do with num_crtcs? Well, this was technically > > > correct, but you'd have to go look at where num_crtcs is initialized to > > > understand why. Lets just replace it with the simpler and more obvious > > > check. > > > > If you want to fix this, then I think the right fix is to rename num_crtcs > > to be something like num_vblank_crtcs. It's a historical accident back > > when vblanks without kms was a thing. > > > > Plan B is someone gets really busy and fixes up the entire vblank mess and > > moves it into drm_crtc struct. Now that the dri1 drivers are gone we could > > indeed do that. > > And easy first step could to simply wrap all the naked > &dev->vblank[drm_crtc_index()] things into a function > call with some cocci/etc. That way most of the vblank > code doesn't need to care where that thing actually lives. Yeah I think that might work out. Roughly: - Wrap all the drm_vblank_crtc lookups - Emebed it into drm_crtc, delete the drm_device->vblank array - rename drm_device->num_crtc to something more meaningful maybe and move into drm_modeset_config The big holdup always was step 2 because we still had to care about legacy drivers without drm_crtc, which meant you'd have to have two paths, which was kinda really annoying. -Daniel
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c index 877e2067534f..ad34c235d853 100644 --- a/drivers/gpu/drm/drm_vblank.c +++ b/drivers/gpu/drm/drm_vblank.c @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init); */ bool drm_dev_has_vblank(const struct drm_device *dev) { - return dev->num_crtcs != 0; + return !!dev->vblank; } EXPORT_SYMBOL(drm_dev_has_vblank);