Hi Matt, [...] all good [...] > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h Is this the right place to define this? Maybe in i915/gt/intel_gt.h? > @@ -431,6 +431,29 @@ static inline struct intel_gt *to_gt(struct drm_i915_private *i915) > #define IS_GRAPHICS_VER(i915, from, until) \ > (GRAPHICS_VER(i915) >= (from) && GRAPHICS_VER(i915) <= (until)) > > +#define __IS_MEDIA_GT(gt) ((gt)->type == GT_MEDIA) > +#define __IS_GFX_GT(gt) (!__IS_MEDIA_GT(gt)) > +#define __GT_VER_FULL(gt) (__IS_MEDIA_GT(gt) ? \ > + MEDIA_VER_FULL((gt)->i915) : \ > + GRAPHICS_VER_FULL((gt)->i915)) I think you can remove the '__' they can be widely used all around the gt/ code. > +/* > + * Check that a GT contains IP of the specified type and within the specified > + * IP range. E.g., > + * > + * IS_GT_IP_RANGE(GFX, IP_VER(12, 70), IP_VER(12, 71)) > + * IS_GT_IP_RANGE(MEDIA, IP_VER(13, 00), IP_VER(18, 02)) > + * > + * Note that media version checks with this macro will only work on platforms > + * with standalone media design (i.e., media version 13 and higher). > + */ > +#define IS_GT_IP_RANGE(type, gt, from, until) ( \ > + BUILD_BUG_ON_ZERO(from < IP_VER(2, 0)) + \ > + BUILD_BUG_ON_ZERO(until < from) + \ > + (__IS_##type##_GT(gt) && \ > + __GT_VER_FULL(gt) >= (from) && \ > + __GT_VER_FULL(gt) <= (until))) This helper deservers its own patch :) Can we split it from the rest? Thanks, Andi > #define MEDIA_VER(i915) (RUNTIME_INFO(i915)->media.ip.ver) > #define MEDIA_VER_FULL(i915) IP_VER(RUNTIME_INFO(i915)->media.ip.ver, \ > RUNTIME_INFO(i915)->media.ip.rel) > -- > 2.41.0