STRUCT XE_UC_FW(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct xe_uc_fw β€” Xe micro controller firmware ✨

okay so bestie, we're looking at the struct xe_uc_fw manpage from the Kernel API Manual. it's giving "firmware glow-up" energy and honestly? we're obsessed. this struct is literally the blueprint for how the Xe driver keeps track of micro controller firmware, and i'm gonna walk you through every single member like we're studying together at 2am. no cap, every detail stays. πŸ’…

🌸 SYNOPSIS 🌸

here's the whole struct, exactly as it lives in the kernel. don't touch, just vibe:

struct xe_uc_fw {
    enum xe_uc_fw_type type;
    union {
      const enum xe_uc_fw_status status;
      enum xe_uc_fw_status __status;
    };
    const char *path;
    bool user_overridden;
    bool full_ver_required;
    size_t size;
    struct xe_bo *bo;
    bool has_gsc_headers;
    struct {
      struct xe_uc_fw_version wanted;
      enum xe_uc_fw_version_types wanted_type;
      struct xe_uc_fw_version found[XE_UC_FW_VER_TYPE_COUNT];
    } versions;
    u32 rsa_size;
    u32 ucode_size;
    u32 css_offset;
    u32 private_data_size;
    u32 build_type;
 };

πŸŽ€ Members πŸŽ€

okay this is the part where we go member by member, and i promise it's gonna slay:

  • type β€” the type of uC firmware. literally what kind of micro controller firmware we're dealing with. πŸ¦‹
  • {unnamed_union} β€” an anonymous union, bestie. it's giving "mystery wrapper" but it's just holding the two status fields below. πŸ™ˆ
  • status β€” the firmware load status. this is the public-facing mood ring of your firmware. ✨
  • __status β€” the private firmware load status. and listen, this one is only to be used by firmware loading code. no cap, don't touch it unless you're literally the loader. πŸ”’
  • path β€” path to the uC firmware. where your firmware blob lives, iykyk. πŸ“
  • user_overridden β€” user provided path to uC firmware via modparam. so if you went in and overrode it yourself, this flag is like "yep, that was me." πŸ’…
  • full_ver_required β€” this one's important: the driver is still under development and not ready for backward-compatible firmware. to be used only for new platforms, i.e. still under require_force_probe protection and not supported by i915. fr fr, respect the boundary. 🚧
  • size β€” size of the uC firmware including the CSS header. the whole package, not just the vibe. πŸ“
  • bo β€” the Xe BO (buffer object) for the uC firmware. it's the actual memory home for your firmware. 🏠
  • has_gsc_headers β€” whether the FW image starts with GSC headers. true/false, iconic either way. 🎯
  • versions β€” FW versions wanted and found. the whole "what we asked for vs what we got" situation. and it's got sub-members, so let's go:
    • versions.wanted β€” the firmware version wanted by the platform. the dream. πŸ’­
    • versions.wanted_type β€” the type of firmware version wanted (release vs compatibility). because sometimes you want the stable one and sometimes you want the chill one. πŸ“
    • versions.found β€” the FW versions found in the firmware blob. the reality check. it's an array of XE_UC_FW_VER_TYPE_COUNT elements, so there's room for all the types. πŸ”₯
  • rsa_size β€” RSA size. numbers don't lie. πŸ”’
  • ucode_size β€” micro kernel size. the little kernel that could. 🧚
  • css_offset β€” the offset within the blob at which the CSS is located. basically the treasure map coordinate for your CSS. πŸ—ΊοΈ
  • private_data_size β€” size of private data found in the uC CSS header. it's giving "personal info" but it's just bytes. πŸ™Š
  • build_type β€” the Firmware build type. see CSS_UKERNEL_INFO_BUILDTYPE for definitions. that's where the lore lives. πŸ‘‘

πŸ’œ SEE ALSO πŸ’œ

  • Kernel file ./drivers/gpu/drm/xe/xe_uc_fw_types.h struct xe_uc_fw_version(9)

like, go read those if you wanna go deeper. i believe in you. 🫢


and that's the whole page, bestie! this was pulled from ./drivers/gpu/drm/xe and dated October 2026. the manual name is struct xe_uc_fw(9), in case you forgot already (no judgment). now go forth and firmware responsibly. mwah! πŸ’–πŸŒˆβ­

πŸ“¦ where this page comes from