Allow a mask of features to be passed to drm_core_check_feature(). All features in the mask are required.
Signed-off-by: Jani Nikula jani.nikula@intel.com --- include/drm/drm_drv.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index cf13470810a5..51b486d1ee81 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -826,16 +826,18 @@ static inline bool drm_dev_is_unplugged(struct drm_device *dev) /** * drm_core_check_feature - check driver feature flags * @dev: DRM device to check - * @feature: feature flag + * @feature: feature flag(s) * * This checks @dev for driver features, see &drm_driver.driver_features, * &drm_device.driver_features, and the various &enum drm_driver_feature flags. * - * Returns true if the @feature is supported, false otherwise. + * Returns true if all features in the @feature mask are supported, false + * otherwise. */ -static inline bool drm_core_check_feature(const struct drm_device *dev, u32 feature) +static inline bool drm_core_check_feature(const struct drm_device *dev, u32 features) { - return dev->driver->driver_features & dev->driver_features & feature; + return features && (dev->driver->driver_features & dev->driver_features & + features) == features; }
/**
Use drm_core_check_feature() to ensure both the driver features and the per-device driver features are taken into account when registering debugfs files.
Signed-off-by: Jani Nikula jani.nikula@intel.com --- drivers/gpu/drm/drm_debugfs.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index eab0f2687cd6..af3531bf57d3 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -180,10 +180,7 @@ int drm_debugfs_create_files(const struct drm_info_list *files, int count, int i;
for (i = 0; i < count; i++) { - u32 features = files[i].driver_features; - - if (features != 0 && - (dev->driver->driver_features & features) != features) + if (!drm_core_check_feature(dev, files[i].driver_features)) continue;
tmp = kmalloc(sizeof(struct drm_info_node), GFP_KERNEL);
On Tue, Jan 21, 2020 at 12:53:30PM +0200, Jani Nikula wrote:
^ missing 's'
same here
Could maybe do with an extra variable?
u32 supported = driver->driver_features & dev->driver_features; return features && (features & supported) == features;
Series is Reviewed-by: Ville Syrjälä ville.syrjala@linux.intel.com
dri-devel@lists.freedesktop.org