On Wed, 2024-01-24 at 10:19 +0200, Joonas Lahtinen wrote: > Add reporting of the GuC submissio/VF interface version via GETPARAM > properties. Mesa intends to use this information to check for old > firmware versions with known bugs before enabling features like async > compute. > Reviewed-by: José Roberto de Souza <jose.souza@xxxxxxxxx> > Signed-off-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Cc: Kenneth Graunke <kenneth@xxxxxxxxxxxxx> > Cc: Jose Souza <jose.souza@xxxxxxxxx> > Cc: Sagar Ghuge <sagar.ghuge@xxxxxxxxx> > Cc: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Cc: John Harrison <John.C.Harrison@xxxxxxxxx> > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_getparam.c | 12 ++++++++++++ > include/uapi/drm/i915_drm.h | 13 +++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c > index 5c3fec63cb4c1..f176372debc54 100644 > --- a/drivers/gpu/drm/i915/i915_getparam.c > +++ b/drivers/gpu/drm/i915/i915_getparam.c > @@ -113,6 +113,18 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, > if (value < 0) > return value; > break; > + case I915_PARAM_GUC_SUBMISSION_VERSION_MAJOR: > + case I915_PARAM_GUC_SUBMISSION_VERSION_MINOR: > + case I915_PARAM_GUC_SUBMISSION_VERSION_PATCH: > + if (!intel_uc_uses_guc_submission(&to_gt(i915)->uc)) > + return -ENODEV; > + if (param->param == I915_PARAM_GUC_SUBMISSION_VERSION_MAJOR) > + value = to_gt(i915)->uc.guc.submission_version.major; > + else if (param->param == I915_PARAM_GUC_SUBMISSION_VERSION_MINOR) > + value = to_gt(i915)->uc.guc.submission_version.minor; > + else > + value = to_gt(i915)->uc.guc.submission_version.patch; > + break; > case I915_PARAM_MMAP_GTT_VERSION: > /* Though we've started our numbering from 1, and so class all > * earlier versions as 0, in effect their value is undefined as > diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h > index fd4f9574d177a..7d5a47f182542 100644 > --- a/include/uapi/drm/i915_drm.h > +++ b/include/uapi/drm/i915_drm.h > @@ -806,6 +806,19 @@ typedef struct drm_i915_irq_wait { > */ > #define I915_PARAM_PXP_STATUS 58 > > +/* > + * Query for the GuC submission/VF interface version number > + * > + * -ENODEV is returned if GuC submission is not used > + * > + * On success, returns the respective GuC submission/VF interface major, > + * minor or patch version as per the requested parameter. > + * > + */ > +#define I915_PARAM_GUC_SUBMISSION_VERSION_MAJOR 59 > +#define I915_PARAM_GUC_SUBMISSION_VERSION_MINOR 60 > +#define I915_PARAM_GUC_SUBMISSION_VERSION_PATCH 61 > + > /* Must be kept compact -- no holes and well documented */ > > /**