[RFC 6/7] drm/i915: Use shared GuC ABI definitions

Michal Wajdeczko michal.wajdeczko at intel.com
Tue Jun 11 14:30:07 UTC 2024


We no longer need to maintain some of the GuC ABI definitions
inside the i915 driver as the shared one are exactly the same.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
---
 drivers/gpu/drm/i915/Makefile                 |   5 +
 .../gt/uc/abi/guc_communication_ctb_abi.h     | 170 -----------
 .../gt/uc/abi/guc_communication_mmio_abi.h    |  49 ----
 drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h | 112 --------
 .../gpu/drm/i915/gt/uc/abi/guc_messages_abi.h | 264 ------------------
 5 files changed, 5 insertions(+), 595 deletions(-)
 delete mode 100644 drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h
 delete mode 100644 drivers/gpu/drm/i915/gt/uc/abi/guc_communication_mmio_abi.h
 delete mode 100644 drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h
 delete mode 100644 drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 4022e4499382..7702ad1f59fc 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -15,6 +15,11 @@ subdir-ccflags-y += -DI915
 
 subdir-ccflags-y += -I$(src)
 
+# Shared ABI definitions
+subdir-ccflags-y += \
+	-I$(srctree)/drivers/gpu/drm/intel/guc/ \
+	-I$(srctree)/drivers/gpu/drm/intel/guc/abi
+
 # Please keep these build lists sorted!
 
 # core driver code
diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h
deleted file mode 100644
index f7d70db16d76..000000000000
--- a/drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2014-2021 Intel Corporation
- */
-
-#ifndef _ABI_GUC_COMMUNICATION_CTB_ABI_H
-#define _ABI_GUC_COMMUNICATION_CTB_ABI_H
-
-#include <linux/types.h>
-#include <linux/build_bug.h>
-
-#include "guc_messages_abi.h"
-
-/**
- * DOC: CT Buffer
- *
- * Circular buffer used to send `CTB Message`_
- */
-
-/**
- * DOC: CTB Descriptor
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |  31:0 | **HEAD** - offset (in dwords) to the last dword that was     |
- *  |   |       | read from the `CT Buffer`_.                                  |
- *  |   |       | It can only be updated by the receiver.                      |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 | **TAIL** - offset (in dwords) to the last dword that was     |
- *  |   |       | written to the `CT Buffer`_.                                 |
- *  |   |       | It can only be updated by the sender.                        |
- *  +---+-------+--------------------------------------------------------------+
- *  | 2 |  31:0 | **STATUS** - status of the CTB                               |
- *  |   |       |                                                              |
- *  |   |       |   - _`GUC_CTB_STATUS_NO_ERROR` = 0 (normal operation)        |
- *  |   |       |   - _`GUC_CTB_STATUS_OVERFLOW` = 1 (head/tail too large)     |
- *  |   |       |   - _`GUC_CTB_STATUS_UNDERFLOW` = 2 (truncated message)      |
- *  |   |       |   - _`GUC_CTB_STATUS_MISMATCH` = 4 (head/tail modified)      |
- *  |   |       |   - _`GUC_CTB_STATUS_UNUSED` = 8 (CTB is not in use)         |
- *  +---+-------+--------------------------------------------------------------+
- *  |...|       | RESERVED = MBZ                                               |
- *  +---+-------+--------------------------------------------------------------+
- *  | 15|  31:0 | RESERVED = MBZ                                               |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-struct guc_ct_buffer_desc {
-	u32 head;
-	u32 tail;
-	u32 status;
-#define GUC_CTB_STATUS_NO_ERROR				0
-#define GUC_CTB_STATUS_OVERFLOW				BIT(0)
-#define GUC_CTB_STATUS_UNDERFLOW			BIT(1)
-#define GUC_CTB_STATUS_MISMATCH				BIT(2)
-#define GUC_CTB_STATUS_UNUSED				BIT(3)
-	u32 reserved[13];
-} __packed;
-static_assert(sizeof(struct guc_ct_buffer_desc) == 64);
-
-/**
- * DOC: CTB Message
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 | 31:16 | **FENCE** - message identifier                               |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 15:12 | **FORMAT** - format of the CTB message                       |
- *  |   |       |  - _`GUC_CTB_FORMAT_HXG` = 0 - see `CTB HXG Message`_        |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  11:8 | **RESERVED**                                                 |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |   7:0 | **NUM_DWORDS** - length of the CTB message (w/o header)      |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 | optional (depends on FORMAT)                                 |
- *  +---+-------+                                                              |
- *  |...|       |                                                              |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_CTB_HDR_LEN				1u
-#define GUC_CTB_MSG_MIN_LEN			GUC_CTB_HDR_LEN
-#define GUC_CTB_MSG_MAX_LEN			256u
-#define GUC_CTB_MSG_0_FENCE			(0xffffU << 16)
-#define GUC_CTB_MSG_0_FORMAT			(0xf << 12)
-#define   GUC_CTB_FORMAT_HXG			0u
-#define GUC_CTB_MSG_0_RESERVED			(0xf << 8)
-#define GUC_CTB_MSG_0_NUM_DWORDS		(0xff << 0)
-
-/**
- * DOC: CTB HXG Message
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 | 31:16 | FENCE                                                        |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 15:12 | FORMAT = GUC_CTB_FORMAT_HXG_                                 |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  11:8 | RESERVED = MBZ                                               |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |   7:0 | NUM_DWORDS = length (in dwords) of the embedded HXG message  |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 |                                                              |
- *  +---+-------+                                                              |
- *  |...|       | [Embedded `HXG Message`_]                                    |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_CTB_HXG_MSG_MIN_LEN		(GUC_CTB_MSG_MIN_LEN + GUC_HXG_MSG_MIN_LEN)
-#define GUC_CTB_HXG_MSG_MAX_LEN		GUC_CTB_MSG_MAX_LEN
-
-/**
- * DOC: CTB based communication
- *
- * The CTB (command transport buffer) communication between Host and GuC
- * is based on u32 data stream written to the shared buffer. One buffer can
- * be used to transmit data only in one direction (one-directional channel).
- *
- * Current status of the each buffer is stored in the buffer descriptor.
- * Buffer descriptor holds tail and head fields that represents active data
- * stream. The tail field is updated by the data producer (sender), and head
- * field is updated by the data consumer (receiver)::
- *
- *      +------------+
- *      | DESCRIPTOR |          +=================+============+========+
- *      +============+          |                 | MESSAGE(s) |        |
- *      | address    |--------->+=================+============+========+
- *      +------------+
- *      | head       |          ^-----head--------^
- *      +------------+
- *      | tail       |          ^---------tail-----------------^
- *      +------------+
- *      | size       |          ^---------------size--------------------^
- *      +------------+
- *
- * Each message in data stream starts with the single u32 treated as a header,
- * followed by optional set of u32 data that makes message specific payload::
- *
- *      +------------+---------+---------+---------+
- *      |         MESSAGE                          |
- *      +------------+---------+---------+---------+
- *      |   msg[0]   |   [1]   |   ...   |  [n-1]  |
- *      +------------+---------+---------+---------+
- *      |   MESSAGE  |       MESSAGE PAYLOAD       |
- *      +   HEADER   +---------+---------+---------+
- *      |            |    0    |   ...   |    n    |
- *      +======+=====+=========+=========+=========+
- *      | 31:16| code|         |         |         |
- *      +------+-----+         |         |         |
- *      |  15:5|flags|         |         |         |
- *      +------+-----+         |         |         |
- *      |   4:0|  len|         |         |         |
- *      +------+-----+---------+---------+---------+
- *
- *                   ^-------------len-------------^
- *
- * The message header consists of:
- *
- * - **len**, indicates length of the message payload (in u32)
- * - **code**, indicates message code
- * - **flags**, holds various bits to control message handling
- */
-
-#endif /* _ABI_GUC_COMMUNICATION_CTB_ABI_H */
diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_communication_mmio_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_communication_mmio_abi.h
deleted file mode 100644
index 9baa3cb07d13..000000000000
--- a/drivers/gpu/drm/i915/gt/uc/abi/guc_communication_mmio_abi.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2014-2021 Intel Corporation
- */
-
-#ifndef _ABI_GUC_COMMUNICATION_MMIO_ABI_H
-#define _ABI_GUC_COMMUNICATION_MMIO_ABI_H
-
-/**
- * DOC: GuC MMIO based communication
- *
- * The MMIO based communication between Host and GuC relies on special
- * hardware registers which format could be defined by the software
- * (so called scratch registers).
- *
- * Each MMIO based message, both Host to GuC (H2G) and GuC to Host (G2H)
- * messages, which maximum length depends on number of available scratch
- * registers, is directly written into those scratch registers.
- *
- * For Gen9+, there are 16 software scratch registers 0xC180-0xC1B8,
- * but no H2G command takes more than 4 parameters and the GuC firmware
- * itself uses an 4-element array to store the H2G message.
- *
- * For Gen11+, there are additional 4 registers 0x190240-0x19024C, which
- * are, regardless on lower count, preferred over legacy ones.
- *
- * The MMIO based communication is mainly used during driver initialization
- * phase to setup the `CTB based communication`_ that will be used afterwards.
- */
-
-#define GUC_MAX_MMIO_MSG_LEN		4
-
-/**
- * DOC: MMIO HXG Message
- *
- * Format of the MMIO messages follows definitions of `HXG Message`_.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |  31:0 |                                                              |
- *  +---+-------+                                                              |
- *  |...|       | [Embedded `HXG Message`_]                                    |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#endif /* _ABI_GUC_COMMUNICATION_MMIO_ABI_H */
diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h
deleted file mode 100644
index 37ff539a6963..000000000000
--- a/drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2021 Intel Corporation
- */
-
-#ifndef _ABI_GUC_KLVS_ABI_H
-#define _ABI_GUC_KLVS_ABI_H
-
-#include <linux/types.h>
-
-/**
- * DOC: GuC KLV
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 | 31:16 | **KEY** - KLV key identifier                                 |
- *  |   |       |   - `GuC Self Config KLVs`_                                  |
- *  |   |       |                                                              |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  15:0 | **LEN** - length of VALUE (in 32bit dwords)                  |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 | **VALUE** - actual value of the KLV (format depends on KEY)  |
- *  +---+-------+                                                              |
- *  |...|       |                                                              |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_KLV_LEN_MIN				1u
-#define GUC_KLV_0_KEY				(0xffffu << 16)
-#define GUC_KLV_0_LEN				(0xffffu << 0)
-#define GUC_KLV_n_VALUE				(0xffffffffu << 0)
-
-/**
- * DOC: GuC Self Config KLVs
- *
- * `GuC KLV`_ keys available for use with HOST2GUC_SELF_CFG_.
- *
- * _`GUC_KLV_SELF_CFG_H2G_CTB_ADDR` : 0x0902
- *      Refers to 64 bit Global Gfx address of H2G `CT Buffer`_.
- *      Should be above WOPCM address but below APIC base address for native mode.
- *
- * _`GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR` : 0x0903
- *      Refers to 64 bit Global Gfx address of H2G `CTB Descriptor`_.
- *      Should be above WOPCM address but below APIC base address for native mode.
- *
- * _`GUC_KLV_SELF_CFG_H2G_CTB_SIZE` : 0x0904
- *      Refers to size of H2G `CT Buffer`_ in bytes.
- *      Should be a multiple of 4K.
- *
- * _`GUC_KLV_SELF_CFG_G2H_CTB_ADDR` : 0x0905
- *      Refers to 64 bit Global Gfx address of G2H `CT Buffer`_.
- *      Should be above WOPCM address but below APIC base address for native mode.
- *
- * _`GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR` : 0x0906
- *      Refers to 64 bit Global Gfx address of G2H `CTB Descriptor`_.
- *      Should be above WOPCM address but below APIC base address for native mode.
- *
- * _`GUC_KLV_SELF_CFG_G2H_CTB_SIZE` : 0x0907
- *      Refers to size of G2H `CT Buffer`_ in bytes.
- *      Should be a multiple of 4K.
- */
-
-#define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_KEY		0x0902
-#define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_LEN		2u
-
-#define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_KEY	0x0903
-#define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_LEN	2u
-
-#define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_KEY		0x0904
-#define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_LEN		1u
-
-#define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_KEY		0x0905
-#define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_LEN		2u
-
-#define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_KEY	0x0906
-#define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_LEN	2u
-
-#define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_KEY		0x0907
-#define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_LEN		1u
-
-/*
- * Global scheduling policy update keys.
- */
-enum {
-	GUC_SCHEDULING_POLICIES_KLV_ID_RENDER_COMPUTE_YIELD	= 0x1001,
-};
-
-/*
- * Per context scheduling policy update keys.
- */
-enum {
-	GUC_CONTEXT_POLICIES_KLV_ID_EXECUTION_QUANTUM			= 0x2001,
-	GUC_CONTEXT_POLICIES_KLV_ID_PREEMPTION_TIMEOUT			= 0x2002,
-	GUC_CONTEXT_POLICIES_KLV_ID_SCHEDULING_PRIORITY			= 0x2003,
-	GUC_CONTEXT_POLICIES_KLV_ID_PREEMPT_TO_IDLE_ON_QUANTUM_EXPIRY	= 0x2004,
-	GUC_CONTEXT_POLICIES_KLV_ID_SLPM_GT_FREQUENCY			= 0x2005,
-
-	GUC_CONTEXT_POLICIES_KLV_NUM_IDS = 5,
-};
-
-/*
- * Workaround keys:
- */
-enum {
-	GUC_WORKAROUND_KLV_SERIALIZED_RA_MODE				= 0x9001,
-	GUC_WORKAROUND_KLV_BLOCK_INTERRUPTS_WHEN_MGSR_BLOCKED		= 0x9002,
-};
-
-#endif /* _ABI_GUC_KLVS_ABI_H */
diff --git a/drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h b/drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h
deleted file mode 100644
index 98eb4f46572b..000000000000
--- a/drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2014-2021 Intel Corporation
- */
-
-#ifndef _ABI_GUC_MESSAGES_ABI_H
-#define _ABI_GUC_MESSAGES_ABI_H
-
-/**
- * DOC: HXG Message
- *
- * All messages exchanged with GuC are defined using 32 bit dwords.
- * First dword is treated as a message header. Remaining dwords are optional.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  |   |       |                                                              |
- *  | 0 |    31 | **ORIGIN** - originator of the message                       |
- *  |   |       |   - _`GUC_HXG_ORIGIN_HOST` = 0                               |
- *  |   |       |   - _`GUC_HXG_ORIGIN_GUC` = 1                                |
- *  |   |       |                                                              |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | **TYPE** - message type                                      |
- *  |   |       |   - _`GUC_HXG_TYPE_REQUEST` = 0                              |
- *  |   |       |   - _`GUC_HXG_TYPE_EVENT` = 1                                |
- *  |   |       |   - _`GUC_HXG_TYPE_FAST_REQUEST` = 2                         |
- *  |   |       |   - _`GUC_HXG_TYPE_NO_RESPONSE_BUSY` = 3                     |
- *  |   |       |   - _`GUC_HXG_TYPE_NO_RESPONSE_RETRY` = 5                    |
- *  |   |       |   - _`GUC_HXG_TYPE_RESPONSE_FAILURE` = 6                     |
- *  |   |       |   - _`GUC_HXG_TYPE_RESPONSE_SUCCESS` = 7                     |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  27:0 | **AUX** - auxiliary data (depends on TYPE)                   |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 |                                                              |
- *  +---+-------+                                                              |
- *  |...|       | **PAYLOAD** - optional payload (depends on TYPE)             |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_MSG_MIN_LEN			1u
-#define GUC_HXG_MSG_0_ORIGIN			(0x1U << 31)
-#define   GUC_HXG_ORIGIN_HOST			0u
-#define   GUC_HXG_ORIGIN_GUC			1u
-#define GUC_HXG_MSG_0_TYPE			(0x7 << 28)
-#define   GUC_HXG_TYPE_REQUEST			0u
-#define   GUC_HXG_TYPE_EVENT			1u
-#define   GUC_HXG_TYPE_FAST_REQUEST		2u
-#define   GUC_HXG_TYPE_NO_RESPONSE_BUSY		3u
-#define   GUC_HXG_TYPE_NO_RESPONSE_RETRY	5u
-#define   GUC_HXG_TYPE_RESPONSE_FAILURE		6u
-#define   GUC_HXG_TYPE_RESPONSE_SUCCESS		7u
-#define GUC_HXG_MSG_0_AUX			(0xfffffff << 0)
-#define GUC_HXG_MSG_n_PAYLOAD			(0xffffffff << 0)
-
-/**
- * DOC: HXG Request
- *
- * The `HXG Request`_ message should be used to initiate synchronous activity
- * for which confirmation or return data is expected.
- *
- * The recipient of this message shall use `HXG Response`_, `HXG Failure`_
- * or `HXG Retry`_ message as a definite reply, and may use `HXG Busy`_
- * message as a intermediate reply.
- *
- * Format of @DATA0 and all @DATAn fields depends on the @ACTION code.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN                                                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_                                 |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 27:16 | **DATA0** - request data (depends on ACTION)                 |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  15:0 | **ACTION** - requested action code                           |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 |                                                              |
- *  +---+-------+                                                              |
- *  |...|       | **DATAn** - optional data (depends on ACTION)                |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_REQUEST_MSG_MIN_LEN		GUC_HXG_MSG_MIN_LEN
-#define GUC_HXG_REQUEST_MSG_0_DATA0		(0xfff << 16)
-#define GUC_HXG_REQUEST_MSG_0_ACTION		(0xffff << 0)
-#define GUC_HXG_REQUEST_MSG_n_DATAn		GUC_HXG_MSG_n_PAYLOAD
-
-/**
- * DOC: HXG Fast Request
- *
- * The `HXG Request`_ message should be used to initiate asynchronous activity
- * for which confirmation or return data is not expected.
- *
- * If confirmation is required then `HXG Request`_ shall be used instead.
- *
- * The recipient of this message may only use `HXG Failure`_ message if it was
- * unable to accept this request (like invalid data).
- *
- * Format of `HXG Fast Request`_ message is same as `HXG Request`_ except @TYPE.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN - see `HXG Message`_                                  |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = `GUC_HXG_TYPE_FAST_REQUEST`_                          |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 27:16 | DATA0 - see `HXG Request`_                                   |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  15:0 | ACTION - see `HXG Request`_                                  |
- *  +---+-------+--------------------------------------------------------------+
- *  |...|       | DATAn - see `HXG Request`_                                   |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-/**
- * DOC: HXG Event
- *
- * The `HXG Event`_ message should be used to initiate asynchronous activity
- * that does not involves immediate confirmation nor data.
- *
- * Format of @DATA0 and all @DATAn fields depends on the @ACTION code.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN                                                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_                                   |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 27:16 | **DATA0** - event data (depends on ACTION)                   |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  15:0 | **ACTION** - event action code                               |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 |                                                              |
- *  +---+-------+                                                              |
- *  |...|       | **DATAn** - optional event  data (depends on ACTION)         |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_EVENT_MSG_MIN_LEN		GUC_HXG_MSG_MIN_LEN
-#define GUC_HXG_EVENT_MSG_0_DATA0		(0xfff << 16)
-#define GUC_HXG_EVENT_MSG_0_ACTION		(0xffff << 0)
-#define GUC_HXG_EVENT_MSG_n_DATAn		GUC_HXG_MSG_n_PAYLOAD
-
-/**
- * DOC: HXG Busy
- *
- * The `HXG Busy`_ message may be used to acknowledge reception of the `HXG Request`_
- * message if the recipient expects that it processing will be longer than default
- * timeout.
- *
- * The @COUNTER field may be used as a progress indicator.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN                                                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = GUC_HXG_TYPE_NO_RESPONSE_BUSY_                        |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  27:0 | **COUNTER** - progress indicator                             |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_BUSY_MSG_LEN			GUC_HXG_MSG_MIN_LEN
-#define GUC_HXG_BUSY_MSG_0_COUNTER		GUC_HXG_MSG_0_AUX
-
-/**
- * DOC: HXG Retry
- *
- * The `HXG Retry`_ message should be used by recipient to indicate that the
- * `HXG Request`_ message was dropped and it should be resent again.
- *
- * The @REASON field may be used to provide additional information.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN                                                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = GUC_HXG_TYPE_NO_RESPONSE_RETRY_                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  27:0 | **REASON** - reason for retry                                |
- *  |   |       |  - _`GUC_HXG_RETRY_REASON_UNSPECIFIED` = 0                   |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_RETRY_MSG_LEN			GUC_HXG_MSG_MIN_LEN
-#define GUC_HXG_RETRY_MSG_0_REASON		GUC_HXG_MSG_0_AUX
-#define   GUC_HXG_RETRY_REASON_UNSPECIFIED	0u
-
-/**
- * DOC: HXG Failure
- *
- * The `HXG Failure`_ message shall be used as a reply to the `HXG Request`_
- * message that could not be processed due to an error.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN                                                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_FAILURE_                        |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 27:16 | **HINT** - additional error hint                             |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  15:0 | **ERROR** - error/result code                                |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_FAILURE_MSG_LEN			GUC_HXG_MSG_MIN_LEN
-#define GUC_HXG_FAILURE_MSG_0_HINT		(0xfff << 16)
-#define GUC_HXG_FAILURE_MSG_0_ERROR		(0xffff << 0)
-
-/**
- * DOC: HXG Response
- *
- * The `HXG Response`_ message shall be used as a reply to the `HXG Request`_
- * message that was successfully processed without an error.
- *
- *  +---+-------+--------------------------------------------------------------+
- *  |   | Bits  | Description                                                  |
- *  +===+=======+==============================================================+
- *  | 0 |    31 | ORIGIN                                                       |
- *  |   +-------+--------------------------------------------------------------+
- *  |   | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_                        |
- *  |   +-------+--------------------------------------------------------------+
- *  |   |  27:0 | **DATA0** - data (depends on ACTION from `HXG Request`_)     |
- *  +---+-------+--------------------------------------------------------------+
- *  | 1 |  31:0 |                                                              |
- *  +---+-------+                                                              |
- *  |...|       | **DATAn** - data (depends on ACTION from `HXG Request`_)     |
- *  +---+-------+                                                              |
- *  | n |  31:0 |                                                              |
- *  +---+-------+--------------------------------------------------------------+
- */
-
-#define GUC_HXG_RESPONSE_MSG_MIN_LEN		GUC_HXG_MSG_MIN_LEN
-#define GUC_HXG_RESPONSE_MSG_0_DATA0		GUC_HXG_MSG_0_AUX
-#define GUC_HXG_RESPONSE_MSG_n_DATAn		GUC_HXG_MSG_n_PAYLOAD
-
-/* deprecated */
-#define INTEL_GUC_MSG_TYPE_SHIFT	28
-#define INTEL_GUC_MSG_TYPE_MASK		(0xF << INTEL_GUC_MSG_TYPE_SHIFT)
-#define INTEL_GUC_MSG_DATA_SHIFT	16
-#define INTEL_GUC_MSG_DATA_MASK		(0xFFF << INTEL_GUC_MSG_DATA_SHIFT)
-#define INTEL_GUC_MSG_CODE_SHIFT	0
-#define INTEL_GUC_MSG_CODE_MASK		(0xFFFF << INTEL_GUC_MSG_CODE_SHIFT)
-
-enum intel_guc_msg_type {
-	INTEL_GUC_MSG_TYPE_REQUEST = 0x0,
-	INTEL_GUC_MSG_TYPE_RESPONSE = 0xF,
-};
-
-#endif /* _ABI_GUC_MESSAGES_ABI_H */
-- 
2.43.0



More information about the Intel-gfx mailing list