STRUCT CPUCP_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct cpucp_info(9) β€” the Kernel API Manual page you've been waiting for

okay so bestie, picture this: struct cpucp_info is literally the info packet that CpuCP hands over, and it's everything the host's driver needs to function. that's it. that's the vibe. it's from the Kernel API Manual and it's giving "load-bearing struct" energy, ngl. 🫢


✨ SYNOPSIS ✨

struct cpucp_info {
    struct cpucp_sensor sensors[CPUCP_MAX_SENSORS];
    __u8 kernel_version[VERSION_MAX_LEN];
    __le32 reserved1;
    __le32 card_type;
    __le32 card_location;
    __le32 cpld_version;
    __le32 infineon_version;
    __u8 fuse_version[VERSION_MAX_LEN];
    __u8 thermal_version[VERSION_MAX_LEN];
    __u8 cpucp_version[VERSION_MAX_LEN];
    __le32 infineon_second_stage_version;
    __le64 dram_size;
    char card_name[CARD_NAME_MAX_LEN];
    __le64 tpc_binning_mask;
    __le64 decoder_binning_mask;
    __u8 sram_binning;
    __u8 dram_binning_mask;
    __u8 memory_repair_flag;
    __u8 edma_binning_mask;
    __u8 xbar_binning_mask;
    __u8 interposer_version;
    __u8 substrate_version;
    __u8 eq_health_check_supported;
    struct cpucp_security_info sec_info;
    __le32 cpld_timestamp;
    __u8 pll_map[PLL_MAP_LEN];
    __le64 mme_binning_mask;
    __u8 fw_os_version[VERSION_MAX_LEN];
};

like, look at all those fields. she's thorough. she contains multitudes. πŸ’œ


πŸŽ€ Members πŸŽ€

  • sensors β€” the whole description of which sensors are available. slay.
  • kernel_version β€” the CpuCP linux kernel version. yes, the kernel has a version and here it is.
  • card_type β€” the card configuration type.
  • card_location β€” okay so in a server, each card has a different connections topology depending on where it's sitting. (this one's relevant for PMC card type, iykyk.)
  • cpld_version β€” the CPLD programmed F/W version.
  • infineon_version β€” the Infineon main DC-DC version.
  • fuse_version β€” silicon production FUSE information. literal silicon lore.
  • thermal_version β€” the thermald S/W version.
  • cpucp_version β€” the CpuCP S/W version.
  • infineon_second_stage_version β€” the Infineon 2nd stage DC-DC version. second stage, she's got range.
  • dram_size β€” the available DRAM size.
  • card_name β€” the card name that gets displayed in the HWMON subsystem on the host. it's the card's whole display name, main character energy fr.
  • tpc_binning_mask β€” TPC binning mask, 1 bit per TPC instance (0 = functional, 1 = binned).
  • decoder_binning_mask β€” Decoder binning mask, 1 bit per decoder instance (0 = functional, 1 = binned), maximum 1 per dcore.
  • sram_binning β€” categorizes SRAM functionality: 0 = fully functional, 1 = lower-half is not functional, 2 = upper-half is not functional. pick your fighter.
  • dram_binning_mask β€” DRAM binning mask, 1 bit per dram instance (0 = functional 1 = binned).
  • memory_repair_flag β€” eFuse flag indicating memory repair.
  • edma_binning_mask β€” EDMA binning mask, 1 bit per EDMA instance (0 = functional 1 = binned).
  • xbar_binning_mask β€” Xbar binning mask, 1 bit per Xbar instance (0 = functional 1 = binned).
  • interposer_version β€” Interposer version programmed in eFuse.
  • substrate_version β€” Substrate version programmed in eFuse.
  • eq_health_check_supported β€” eq health check feature supported in FW.
  • sec_info β€” security information. that's it. that's the description. mysterious queen. πŸ™ˆ
  • cpld_timestamp β€” CPLD programmed F/W timestamp.
  • pll_map β€” Bit map of supported PLLs for current ASIC version.
  • mme_binning_mask β€” MME binning mask, and bestie this one's a whole essay so buckle up:
    • bits [0:6] <==> dcore0 mme fma bits
    • [7:13] <==> dcore1 mme fma bits
    • [14:20] <==> dcore0 mme ima bits
    • [21:27] <==> dcore1 mme ima

for each group, if the 6th bit is set then the first 5 bits represent the col's idx [0-31], otherwise these bits are ignored, and col idx 32 is binned. the 7th bit is don't care. (not me needing a snack after reading that 😭 but it's important so there it is, word for word.)

  • fw_os_version β€” Firmware OS Version.
ngl the reserved1 field is just vibing in the struct up there without its own Members entry. we don't make the rules, we just document them. πŸ’€

🌈 SEE ALSO 🌈

  • Kernel file ./include/linux/habanalabs/cpucp_if.h struct cpucp_security_info(9) β€” go read that one next, it's the sequel. πŸ¦‹

and that's the page!! mwah πŸ’– brought to you by the fine folks over at ./include/linux/habanalabs (that's the source/version, keep it in your notes πŸ“) and dated October 2026 β€” yes, the future, because this struct is ahead of its time. periodt. πŸ‘‘βœ¨

πŸ“¦ where this page comes from