Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/gpu/drm/xe/abi/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 5 kB image not shown  

Quelle  guc_relay_communication_abi.h   Sprache: C

 
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2023 Intel Corporation
 */


#ifndef _ABI_GUC_RELAY_COMMUNICATION_ABI_H
#define _ABI_GUC_RELAY_COMMUNICATION_ABI_H

#include <linux/build_bug.h>

#include "guc_actions_sriov_abi.h"
#include "guc_communication_ctb_abi.h"
#include "guc_messages_abi.h"

/**
 * DOC: GuC Relay Communication
 *
 * The communication between Virtual Function (VF) drivers and Physical Function
 * (PF) drivers is based on the GuC firmware acting as a proxy (relay) agent.
 *
 * To communicate with the PF driver, VF's drivers use `VF2GUC_RELAY_TO_PF`_
 * action that takes the `Relay Message`_ as opaque payload and requires the
 * relay message identifier (RID) as additional parameter.
 *
 * This identifier is used by the drivers to match related messages.
 *
 * The GuC forwards this `Relay Message`_ and its identifier to the PF driver
 * in `GUC2PF_RELAY_FROM_VF`_ action. This event message additionally contains
 * the identifier of the origin VF (VFID).
 *
 * Likewise, to communicate with the VF drivers, PF driver use
 * `VF2GUC_RELAY_TO_PF`_ action that in addition to the `Relay Message`_
 * and the relay message identifier (RID) also takes the target VF identifier.
 *
 * The GuC uses this target VFID from the message to select where to send the
 * `GUC2VF_RELAY_FROM_PF`_ with the embedded `Relay Message`_ with response::
 *
 *      VF                             GuC                              PF
 *      |                               |                               |
 *     [ ] VF2GUC_RELAY_TO_PF           |                               |
 *     [ ]---------------------------> [ ]                              |
 *     [ ] { rid, msg }                [ ]                              |
 *     [ ]                             [ ] GUC2PF_RELAY_FROM_VF         |
 *     [ ]                             [ ]---------------------------> [ ]
 *     [ ]                              |  { VFID, rid, msg }          [ ]
 *     [ ]                              |                              [ ]
 *     [ ]                              |           PF2GUC_RELAY_TO_VF [ ]
 *     [ ]                             [ ] <---------------------------[ ]
 *     [ ]                             [ ]        { VFID, rid, reply }  |
 *     [ ]        GUC2VF_RELAY_FROM_PF [ ]                              |
 *     [ ] <---------------------------[ ]                              |
 *      |               { rid, reply }  |                               |
 *      |                               |                               |
 *
 * It is also possible that PF driver will initiate communication with the
 * selected VF driver. The same GuC action messages will be used::
 *
 *      VF                             GuC                              PF
 *      |                               |                               |
 *      |                               |           PF2GUC_RELAY_TO_VF [ ]
 *      |                              [ ] <---------------------------[ ]
 *      |                              [ ]          { VFID, rid, msg } [ ]
 *      |         GUC2VF_RELAY_FROM_PF [ ]                             [ ]
 *     [ ] <---------------------------[ ]                             [ ]
 *     [ ]                { rid, msg }  |                              [ ]
 *     [ ]                              |                              [ ]
 *     [ ] VF2GUC_RELAY_TO_PF           |                              [ ]
 *     [ ]---------------------------> [ ]                             [ ]
 *      |  { rid, reply }              [ ]                             [ ]
 *      |                              [ ] GUC2PF_RELAY_FROM_VF        [ ]
 *      |                              [ ]---------------------------> [ ]
 *      |                               | { VFID, rid, reply }          |
 *      |                               |                               |
 */


/**
 * DOC: Relay Message
 *
 * The `Relay Message`_ is used by Physical Function (PF) driver and Virtual
 * Function (VF) drivers to communicate using `GuC Relay Communication`_.
 *
 * Format of the `Relay Message`_ follows format of the generic `HXG Message`_.
 *
 *  +--------------------------------------------------------------------------+
 *  |  `Relay Message`_                                                        |
 *  +==========================================================================+
 *  |  `HXG Message`_                                                          |
 *  +--------------------------------------------------------------------------+
 *
 * Maximum length of the `Relay Message`_ is limited by the maximum length of
 * the `CTB HXG Message`_ and format of the `GUC2PF_RELAY_FROM_VF`_ message.
 */


#define GUC_RELAY_MSG_MIN_LEN GUC_HXG_MSG_MIN_LEN
#define GUC_RELAY_MSG_MAX_LEN \
 (GUC_CTB_MAX_DWORDS - GUC2PF_RELAY_FROM_VF_EVENT_MSG_MIN_LEN)

static_assert(PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN >
       VF2GUC_RELAY_TO_PF_REQUEST_MSG_MIN_LEN);

/**
 * DOC: Relay Error Codes
 *
 * The `GuC Relay Communication`_ can be used to pass `Relay Message`_ between
 * drivers that run on different Operating Systems. To help in troubleshooting,
 * `GuC Relay Communication`_ uses error codes that mostly match errno values.
 */


#define GUC_RELAY_ERROR_UNDISCLOSED   0
#define GUC_RELAY_ERROR_OPERATION_NOT_PERMITTED  1 /* EPERM */
#define GUC_RELAY_ERROR_PERMISSION_DENIED  13 /* EACCES */
#define GUC_RELAY_ERROR_INVALID_ARGUMENT  22 /* EINVAL */
#define GUC_RELAY_ERROR_INVALID_REQUEST_CODE  56 /* EBADRQC */
#define GUC_RELAY_ERROR_NO_DATA_AVAILABLE  61 /* ENODATA */
#define GUC_RELAY_ERROR_PROTOCOL_ERROR   71 /* EPROTO */
#define GUC_RELAY_ERROR_MESSAGE_SIZE   90 /* EMSGSIZE */

#endif

Messung V0.5
C=91 H=79 G=84

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.