xref: /linux/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h (revision cffaefd15a8f423cdee5d8eac15d267bc92de314)
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2023 Intel Corporation
4  */
5 
6 #ifndef _GUC_ACTIONS_PF_ABI_H
7 #define _GUC_ACTIONS_PF_ABI_H
8 
9 #include "guc_communication_ctb_abi.h"
10 
11 /**
12  * DOC: GUC2PF_RELAY_FROM_VF
13  *
14  * This message is used by the GuC firmware to forward a VF2PF `Relay Message`_
15  * received from the Virtual Function (VF) driver to this Physical Function (PF)
16  * driver.
17  *
18  * This message is always sent as `CTB HXG Message`_.
19  *
20  *  +---+-------+--------------------------------------------------------------+
21  *  |   | Bits  | Description                                                  |
22  *  +===+=======+==============================================================+
23  *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_GUC_                                 |
24  *  |   +-------+--------------------------------------------------------------+
25  *  |   | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_                                   |
26  *  |   +-------+--------------------------------------------------------------+
27  *  |   | 27:16 | MBZ                                                          |
28  *  |   +-------+--------------------------------------------------------------+
29  *  |   |  15:0 | ACTION = _`XE_GUC_ACTION_GUC2PF_RELAY_FROM_VF` = 0x5100      |
30  *  +---+-------+--------------------------------------------------------------+
31  *  | 1 |  31:0 | **VFID** - source VF identifier                              |
32  *  +---+-------+--------------------------------------------------------------+
33  *  | 2 |  31:0 | **RELAY_ID** - VF/PF message ID                              |
34  *  +---+-------+-----------------+--------------------------------------------+
35  *  | 3 |  31:0 | **RELAY_DATA1** |                                            |
36  *  +---+-------+-----------------+                                            |
37  *  |...|       |                 |       [Embedded `Relay Message`_]          |
38  *  +---+-------+-----------------+                                            |
39  *  | n |  31:0 | **RELAY_DATAx** |                                            |
40  *  +---+-------+-----------------+--------------------------------------------+
41  */
42 #define XE_GUC_ACTION_GUC2PF_RELAY_FROM_VF		0x5100
43 
44 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_MIN_LEN		(GUC_HXG_EVENT_MSG_MIN_LEN + 2u)
45 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_MAX_LEN \
46 	(GUC2PF_RELAY_FROM_VF_EVENT_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN)
47 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_0_MBZ		GUC_HXG_EVENT_MSG_0_DATA0
48 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_1_VFID		GUC_HXG_EVENT_MSG_n_DATAn
49 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_2_RELAY_ID	GUC_HXG_EVENT_MSG_n_DATAn
50 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_3_RELAY_DATA1	GUC_HXG_EVENT_MSG_n_DATAn
51 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_n_RELAY_DATAx	GUC_HXG_EVENT_MSG_n_DATAn
52 #define GUC2PF_RELAY_FROM_VF_EVENT_MSG_NUM_RELAY_DATA	GUC_RELAY_MSG_MAX_LEN
53 
54 /**
55  * DOC: PF2GUC_RELAY_TO_VF
56  *
57  * This H2G message is used by the Physical Function (PF) driver to send embedded
58  * VF2PF `Relay Message`_ to the VF.
59  *
60  * This action message must be sent over CTB as `CTB HXG Message`_.
61  *
62  *  +---+-------+--------------------------------------------------------------+
63  *  |   | Bits  | Description                                                  |
64  *  +===+=======+==============================================================+
65  *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_HOST_                                |
66  *  |   +-------+--------------------------------------------------------------+
67  *  |   | 30:28 | TYPE = `GUC_HXG_TYPE_FAST_REQUEST`_                          |
68  *  |   +-------+--------------------------------------------------------------+
69  *  |   | 27:16 | MBZ                                                          |
70  *  |   +-------+--------------------------------------------------------------+
71  *  |   |  15:0 | ACTION = _`XE_GUC_ACTION_PF2GUC_RELAY_TO_VF` = 0x5101        |
72  *  +---+-------+--------------------------------------------------------------+
73  *  | 1 |  31:0 | **VFID** - target VF identifier                              |
74  *  +---+-------+--------------------------------------------------------------+
75  *  | 2 |  31:0 | **RELAY_ID** - VF/PF message ID                              |
76  *  +---+-------+-----------------+--------------------------------------------+
77  *  | 3 |  31:0 | **RELAY_DATA1** |                                            |
78  *  +---+-------+-----------------+                                            |
79  *  |...|       |                 |       [Embedded `Relay Message`_]          |
80  *  +---+-------+-----------------+                                            |
81  *  | n |  31:0 | **RELAY_DATAx** |                                            |
82  *  +---+-------+-----------------+--------------------------------------------+
83  */
84 #define XE_GUC_ACTION_PF2GUC_RELAY_TO_VF		0x5101
85 
86 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN		(GUC_HXG_REQUEST_MSG_MIN_LEN + 2u)
87 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_MAX_LEN \
88 	(PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN)
89 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_0_MBZ		GUC_HXG_REQUEST_MSG_0_DATA0
90 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_1_VFID		GUC_HXG_REQUEST_MSG_n_DATAn
91 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_2_RELAY_ID	GUC_HXG_REQUEST_MSG_n_DATAn
92 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_3_RELAY_DATA1	GUC_HXG_REQUEST_MSG_n_DATAn
93 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_n_RELAY_DATAx	GUC_HXG_REQUEST_MSG_n_DATAn
94 #define PF2GUC_RELAY_TO_VF_REQUEST_MSG_NUM_RELAY_DATA	GUC_RELAY_MSG_MAX_LEN
95 
96 /**
97  * DOC: GUC2VF_RELAY_FROM_PF
98  *
99  * This message is used by the GuC firmware to deliver `Relay Message`_ from the
100  * Physical Function (PF) driver to this Virtual Function (VF) driver.
101  * See `GuC Relay Communication`_ for details.
102  *
103  * This message is always sent over CTB.
104  *
105  *  +---+-------+--------------------------------------------------------------+
106  *  |   | Bits  | Description                                                  |
107  *  +===+=======+==============================================================+
108  *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_GUC_                                 |
109  *  |   +-------+--------------------------------------------------------------+
110  *  |   | 30:28 | TYPE = GUC_HXG_TYPE_EVENT_                                   |
111  *  |   +-------+--------------------------------------------------------------+
112  *  |   | 27:16 | MBZ                                                          |
113  *  |   +-------+--------------------------------------------------------------+
114  *  |   |  15:0 | ACTION = _`XE_GUC_ACTION_GUC2VF_RELAY_FROM_PF` = 0x5102      |
115  *  +---+-------+--------------------------------------------------------------+
116  *  | 1 |  31:0 | **RELAY_ID** - VF/PF message ID                              |
117  *  +---+-------+-----------------+--------------------------------------------+
118  *  | 2 |  31:0 | **RELAY_DATA1** |                                            |
119  *  +---+-------+-----------------+                                            |
120  *  |...|       |                 |       [Embedded `Relay Message`_]          |
121  *  +---+-------+-----------------+                                            |
122  *  | n |  31:0 | **RELAY_DATAx** |                                            |
123  *  +---+-------+-----------------+--------------------------------------------+
124  */
125 #define XE_GUC_ACTION_GUC2VF_RELAY_FROM_PF		0x5102
126 
127 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_MIN_LEN		(GUC_HXG_EVENT_MSG_MIN_LEN + 1u)
128 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_MAX_LEN \
129 	(GUC2VF_RELAY_FROM_PF_EVENT_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN)
130 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_0_MBZ		GUC_HXG_EVENT_MSG_0_DATA0
131 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_1_RELAY_ID	GUC_HXG_EVENT_MSG_n_DATAn
132 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_n_RELAY_DATAx	GUC_HXG_EVENT_MSG_n_DATAn
133 #define GUC2VF_RELAY_FROM_PF_EVENT_MSG_NUM_RELAY_DATA	GUC_RELAY_MSG_MAX_LEN
134 
135 /**
136  * DOC: VF2GUC_RELAY_TO_PF
137  *
138  * This message is used by the Virtual Function (VF) drivers to communicate with
139  * the Physical Function (PF) driver and send `Relay Message`_ to the PF driver.
140  * See `GuC Relay Communication`_ for details.
141  *
142  * This message must be sent over CTB.
143  *
144  *  +---+-------+--------------------------------------------------------------+
145  *  |   | Bits  | Description                                                  |
146  *  +===+=======+==============================================================+
147  *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_HOST_                                |
148  *  |   +-------+--------------------------------------------------------------+
149  *  |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_ or GUC_HXG_TYPE_FAST_REQUEST_   |
150  *  |   +-------+--------------------------------------------------------------+
151  *  |   | 27:16 | MBZ                                                          |
152  *  |   +-------+--------------------------------------------------------------+
153  *  |   |  15:0 | ACTION = _`XE_GUC_ACTION_VF2GUC_RELAY_TO_PF` = 0x5103        |
154  *  +---+-------+--------------------------------------------------------------+
155  *  | 1 |  31:0 | **RELAY_ID** - VF/PF message ID                              |
156  *  +---+-------+-----------------+--------------------------------------------+
157  *  | 2 |  31:0 | **RELAY_DATA1** |                                            |
158  *  +---+-------+-----------------+                                            |
159  *  |...|       |                 |       [Embedded `Relay Message`_]          |
160  *  +---+-------+-----------------+                                            |
161  *  | n |  31:0 | **RELAY_DATAx** |                                            |
162  *  +---+-------+-----------------+--------------------------------------------+
163  */
164 #define XE_GUC_ACTION_VF2GUC_RELAY_TO_PF		0x5103
165 
166 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_MIN_LEN		(GUC_HXG_REQUEST_MSG_MIN_LEN + 1u)
167 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_MAX_LEN \
168 	(VF2GUC_RELAY_TO_PF_REQUEST_MSG_MIN_LEN + GUC_RELAY_MSG_MAX_LEN)
169 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_0_MBZ		GUC_HXG_REQUEST_MSG_0_DATA0
170 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_1_RELAY_ID	GUC_HXG_REQUEST_MSG_n_DATAn
171 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_n_RELAY_DATAx	GUC_HXG_REQUEST_MSG_n_DATAn
172 #define VF2GUC_RELAY_TO_PF_REQUEST_MSG_NUM_RELAY_DATA	GUC_RELAY_MSG_MAX_LEN
173 
174 #endif
175