Message ID | 20180621195428.17447-1-eric@anholt.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Jun 21, 2018 at 12:54:28PM -0700, Eric Anholt wrote: > Drivers such as vc4 don't initialize mode_config.funcs until later in > initialization, but we know they're atomic since they've got the flag > set. This avoids oopsing on dereferencing funcs in the new atomic > methods sanity checks. > > I moved the atomic check function down below the core flag check, to > avoid needing a prototype. > > Signed-off-by: Eric Anholt <eric@anholt.net> > Fixes: ba1f665f161c ("drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers") Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> btw, dim fixes also generates Cc: tags for you (author/reviewer/maintainer of the commit your fixing), besides just the Fixes: line. -Daniel > --- > include/drm/drmP.h | 23 ++++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/include/drm/drmP.h b/include/drm/drmP.h > index f5099c12c6a6..c5dfbdb7271d 100644 > --- a/include/drm/drmP.h > +++ b/include/drm/drmP.h > @@ -97,6 +97,16 @@ struct pci_controller; > > #define DRM_IF_VERSION(maj, min) (maj << 16 | min) > > +#define DRM_SWITCH_POWER_ON 0 > +#define DRM_SWITCH_POWER_OFF 1 > +#define DRM_SWITCH_POWER_CHANGING 2 > +#define DRM_SWITCH_POWER_DYNAMIC_OFF 3 > + > +static inline bool drm_core_check_feature(struct drm_device *dev, int feature) > +{ > + return dev->driver->driver_features & feature; > +} > + > /** > * drm_drv_uses_atomic_modeset - check if the driver implements > * atomic_commit() > @@ -107,17 +117,8 @@ struct pci_controller; > */ > static inline bool drm_drv_uses_atomic_modeset(struct drm_device *dev) > { > - return dev->mode_config.funcs->atomic_commit != NULL; > -} > - > -#define DRM_SWITCH_POWER_ON 0 > -#define DRM_SWITCH_POWER_OFF 1 > -#define DRM_SWITCH_POWER_CHANGING 2 > -#define DRM_SWITCH_POWER_DYNAMIC_OFF 3 > - > -static inline bool drm_core_check_feature(struct drm_device *dev, int feature) > -{ > - return dev->driver->driver_features & feature; > + return drm_core_check_feature(dev, DRIVER_ATOMIC) || > + dev->mode_config.funcs->atomic_commit != NULL; > } > > /* returns true if currently okay to sleep */ > -- > 2.18.0.rc2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index f5099c12c6a6..c5dfbdb7271d 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -97,6 +97,16 @@ struct pci_controller; #define DRM_IF_VERSION(maj, min) (maj << 16 | min) +#define DRM_SWITCH_POWER_ON 0 +#define DRM_SWITCH_POWER_OFF 1 +#define DRM_SWITCH_POWER_CHANGING 2 +#define DRM_SWITCH_POWER_DYNAMIC_OFF 3 + +static inline bool drm_core_check_feature(struct drm_device *dev, int feature) +{ + return dev->driver->driver_features & feature; +} + /** * drm_drv_uses_atomic_modeset - check if the driver implements * atomic_commit() @@ -107,17 +117,8 @@ struct pci_controller; */ static inline bool drm_drv_uses_atomic_modeset(struct drm_device *dev) { - return dev->mode_config.funcs->atomic_commit != NULL; -} - -#define DRM_SWITCH_POWER_ON 0 -#define DRM_SWITCH_POWER_OFF 1 -#define DRM_SWITCH_POWER_CHANGING 2 -#define DRM_SWITCH_POWER_DYNAMIC_OFF 3 - -static inline bool drm_core_check_feature(struct drm_device *dev, int feature) -{ - return dev->driver->driver_features & feature; + return drm_core_check_feature(dev, DRIVER_ATOMIC) || + dev->mode_config.funcs->atomic_commit != NULL; } /* returns true if currently okay to sleep */
Drivers such as vc4 don't initialize mode_config.funcs until later in initialization, but we know they're atomic since they've got the flag set. This avoids oopsing on dereferencing funcs in the new atomic methods sanity checks. I moved the atomic check function down below the core flag check, to avoid needing a prototype. Signed-off-by: Eric Anholt <eric@anholt.net> Fixes: ba1f665f161c ("drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers") --- include/drm/drmP.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)