GUC RELAY COMMUNICATION(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… GuC Relay Communication

okay bestie, welcome to GuC Relay Communication(9) from the Kernel API Manual β€” section 9 is in the house and we are about to understand the relay situation, no cap. ✨

okay so the communication between Virtual Function (VF) drivers and Physical Function (PF) drivers is based on the GuC firmware acting as a proxy (relay) agent. literally the middleman with main character energy. 🫢

To communicate with the PF driver, VF's drivers use the VF2GUC_RELAY_TO_PF action. That action takes the Relay Message as opaque payload and requires the relay message identifier (RID) as an additional parameter. The identifier is used by the drivers to match related messages. slay, matching system. πŸ’…

The GuC forwards this Relay Message and its identifier to the PF driver in the GUC2PF_RELAY_FROM_VF action. This event message additionally contains the identifier of the origin VF (VFID). iconic forwarding behavior, honestly. πŸ¦‹

Likewise, to communicate with the VF drivers, the PF driver uses the VF2GUC_RELAY_TO_PF action β€” and yes, bestie, that's the name in this paragraph, I'm keeping it exactly as written β€” which, 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 the 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 }          |
            |                               |                               |

πŸ‘€ SEE ALSO πŸ‘€

Kernel file ./drivers/gpu/drm/xe/abi/guc_relay_communication_abi.h β€” plus Relay Message(9) and Relay Error Codes(9). Go read them, bestie, they're literally right there. πŸ”₯


footer check, because we don't skip the boring parts: source/version is ./drivers/gpu/drm/xe/abi, date is October 2026, and the page is GuC Relay Communication(9). mwah, byeee πŸ’–βœ¨

πŸ“¦ where this page comes from