[Intel-xe] [PATCH 10/12] drm/xe/gsc: Query GSC compatibility version
John Harrison
john.c.harrison at intel.com
Mon Nov 13 20:10:56 UTC 2023
On 10/27/2023 15:29, Daniele Ceraolo Spurio wrote:
> The version is obtained via a dedicated MKHI GSC command.
> The compatibility version is what we want to match against for the GSC,
> so we need to call the FW version checker after obtaining the version.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Alan Previn <alan.previn.teres.alexis at intel.com>
> ---
> .../gpu/drm/xe/abi/gsc_mkhi_commands_abi.h | 39 +++++++++
> drivers/gpu/drm/xe/xe_gsc.c | 81 +++++++++++++++++++
> drivers/gpu/drm/xe/xe_uc_fw.c | 18 +++--
> drivers/gpu/drm/xe/xe_uc_fw.h | 1 +
> 4 files changed, 133 insertions(+), 6 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/abi/gsc_mkhi_commands_abi.h
>
> diff --git a/drivers/gpu/drm/xe/abi/gsc_mkhi_commands_abi.h b/drivers/gpu/drm/xe/abi/gsc_mkhi_commands_abi.h
> new file mode 100644
> index 000000000000..ad4d041873ab
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/abi/gsc_mkhi_commands_abi.h
> @@ -0,0 +1,39 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#ifndef _ABI_GSC_MKHI_COMMANDS_ABI_H
> +#define _ABI_GSC_MKHI_COMMANDS_ABI_H
> +
> +#include <linux/types.h>
> +
> +/* Heci client ID for MKHI commands */
> +#define HECI_MEADDRESS_MKHI 7
> +
> +/* Generic MKHI header */
> +struct gsc_mkhi_header {
> + u8 group_id;
> + u8 command;
> + u8 reserved;
> + u8 result;
> +} __packed;
> +
> +/* GFX_SRV commands */
> +#define MKHI_GROUP_ID_GFX_SRV 0x30
> +
> +#define MKHI_GFX_SRV_GET_HOST_COMPATIBILITY_VERSION (0x42)
> +
> +struct gsc_get_compatibility_version_in {
> + struct gsc_mkhi_header header;
> +} __packed;
> +
> +struct gsc_get_compatibility_version_out {
> + struct gsc_mkhi_header header;
> + u16 proj_major;
> + u16 compat_major;
> + u16 compat_minor;
> + u16 reserved[5];
> +} __packed;
> +
> +#endif
> diff --git a/drivers/gpu/drm/xe/xe_gsc.c b/drivers/gpu/drm/xe/xe_gsc.c
> index edf74780322a..63323a53f77f 100644
> --- a/drivers/gpu/drm/xe/xe_gsc.c
> +++ b/drivers/gpu/drm/xe/xe_gsc.c
> @@ -7,10 +7,12 @@
>
> #include <drm/drm_managed.h>
>
> +#include "abi/gsc_mkhi_commands_abi.h"
> #include "xe_bb.h"
> #include "xe_bo.h"
> #include "xe_device.h"
> #include "xe_exec_queue.h"
> +#include "xe_gsc_submit.h"
> #include "xe_gt.h"
> #include "xe_gt_printk.h"
> #include "xe_map.h"
> @@ -89,6 +91,77 @@ static int emit_gsc_upload(struct xe_gsc *gsc)
> return 0;
> }
>
> +#define query_msg_wr(xe_, map_, offset_, field_, val_) \
> + xe_map_wr_field(xe_, map_, offset_, struct gsc_get_compatibility_version_in, field_, val_)
> +#define query_msg_rd(xe_, map_, offset_, field_) \
> + xe_map_rd_field(xe_, map_, offset_, struct gsc_get_compatibility_version_out, field_)
These have a very generic 'query_msg' name but are very specifically
tied to the compatibility version query command. That seems wrong.
Otherwise it seems good.
John.
More information about the Intel-xe
mailing list