SLPC H2G MESSAGE FORMAT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ SLPC H2G MESSAGE FORMAT πŸŽ€

okay bestie, so this is a page from the Kernel API Manual, section 9, and it's literally just the ✨ layout ✨ of the SLPC host-to-GUC (H2G) message. Like, the actual byte-by-byte fit check for the vibe. Every bit is accounted for, no cap. Here's the whole thing, exactly as it's drawn:

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚         Bits   Description β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       +===+=======+==============================================================+
       | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_HOST_
       | |
       +-------+--------------------------------------------------------------+
       |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_
       | |
       +-------+--------------------------------------------------------------+
       |   | 27:16 | DATA0 = MBZ
       | |
       +-------+--------------------------------------------------------------+
       |   |  15:0 | ACTION = _`GUC_ACTION_HOST2GUC_PC_SLPM_REQUEST` = 0x3003
       |

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚     1   31:8   **EVENT_ID** β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       +
       +-------+--------------------------------------------------------------+
       |   |   7:0 | **EVENT_ARGC** - number of data arguments
       |

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚     2     31:0   **EVENT_DATA1** β”‚
       β”‚     ...   31:0   ...             β”‚
       β”‚     2+n   31:0   **EVENT_DATAn** β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

so let's break down the drama, slot by slot πŸ’…

  • slot 0 β€” the header era, it's giving very structured:
    • bits 31 β€” ORIGIN = GUC_HXG_ORIGIN_HOST_. hi, it's the host calling 🫢
    • bits 30:28 β€” TYPE = GUC_HXG_TYPE_REQUEST_. it's a request, obviously, main character energy
    • bits 27:16 β€” DATA0 = MBZ. that's Must Be Zero, so please, keep it zero, no notes ✨
    • bits 15:0 β€” ACTION = GUC_ACTION_HOST2GUC_PC_SLPM_REQUEST, and it equals 0x3003. iconic hex moment πŸ”₯
  • slot 1 β€” the event details:
    • bits 31:8 β€” EVENT_ID
    • bits 7:0 β€” EVENT_ARGC β€” the number of data arguments, i.e. how many payload besties are coming next
  • slot 2 … slot 2+n β€” the payload parade 🌈:
    • slot 2, bits 31:0 β€” EVENT_DATA1
    • ... bits 31:0 β€” ...
    • slot 2+n, bits 31:0 β€” EVENT_DATAn

like, the way n is just matching up with EVENT_ARGC? the math is mathing, we love a consistent queen πŸ‘‘


πŸ‘€ SEE ALSO πŸ‘€

go read these next, fr fr:

  • the kernel file ./drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  • SLPC SHARED DATA STRUCTURE(9)
  • SETUP_PC_GUCRC(9)

and that's the whole page, bestie πŸ¦‹ it lives in ./drivers/gpu/drm/xe/abi, it's from October 2026, and it's part of the Kernel API Manual (section 9, SLPC H2G MESSAGE FORMAT). tysm for reading, stan a bitfield for clear skin πŸ’–βœ¨

πŸ“¦ where this page comes from