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. 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 */ /** -- 2.43.0