GUC MEMORY MANAGEMENT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… GuC Memory Management πŸ’…

okay so bestie, this is the Kernel API Manual page for GuC memory management, and it’s honestly kind of iconic in a β€œthe hardware cannot do this alone” way.

GuC can’t allocate any memory for its own usage, so all the allocations must be handled by the host driver. GuC accesses the memory via the GGTT, with the exception of the top and bottom parts of the 4GB address space β€” those are instead re-mapped by the GuC HW to memory location of the FW itself (WOPCM) or other parts of the HW. The driver must take care not to place objects that the GuC is going to access in these reserved ranges. Like, reserved means reserved, periodt. πŸ’€

The layout of the GuC address space is shown below:

       :

           +===========> +====================+ <== FFFF_FFFF
           ^             |      Reserved      |
           |             +====================+ <== GUC_GGTT_TOP
           |             |                    |
           |             |        DRAM        |
          GuC            |                    |
        Address    +===> +====================+ <== GuC ggtt_pin_bias
         Space     ^     |                    |
           |       |     |                    |
           |      GuC    |        GuC         |
           |     WOPCM   |       WOPCM        |
           |      Size   |                    |
           |       |     |                    |
           v       v     |                    |
           +=======+===> +====================+ <== 0000_0000

The lower part of GuC Address Space [0, ggtt_pin_bias) is mapped to GuC WOPCM while upper part of GuC Address Space [ggtt_pin_bias, GUC_GGTT_TOP) is mapped to DRAM. The value of the GuC ggtt_pin_bias is the GuC WOPCM size. Slay, that’s the whole map. πŸ—ΊοΈβœ¨


πŸ¦‹ SEE ALSO πŸ¦‹


bye bestie β€” this page came from source/version ./drivers/gpu/drm/i915/gt/uc and it’s dated October 2026 πŸ’œπŸ«Ά

πŸ“¦ where this page comes from