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 <[email protected]> Cc: Kenneth Graunke <[email protected]> Cc: Jose Souza <[email protected]> Cc: Sagar Ghuge <[email protected]> Cc: Paulo Zanoni <[email protected]> Cc: John Harrison <[email protected]> Cc: Rodrigo Vivi <[email protected]> Cc: Jani Nikula <[email protected]> Cc: Tvrtko Ursulin <[email protected]> --- 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
