STRUCT TPMI_PER_POWER_DOMAIN_INFO(9)
okay so welcome to the Kernel API Manual, bestie β we're doing a full deep-dive on struct tpmi_per_power_domain_info and honestly it's a lot but we're gonna slay it together π
β¨
β¨ NAME β¨
struct tpmi_per_power_domain_info β the lil container that stores per power_domain SST info π
π¦ SYNOPSIS π¦
okay so here's the whole struct laid out, character for character, no cap:
struct tpmi_per_power_domain_info {
int package_id;
int power_domain_id;
int max_level;
int ratio_unit;
int avx_levels;
int pp_block_size;
struct sst_header sst_header;
struct cp_header cp_header;
struct pp_header pp_header;
struct perf_level *perf_levels;
struct feature_offset feature_offsets;
struct pp_control_offset control_offset;
struct pp_status_offset status_offset;
void __iomem *sst_base;
struct auxiliary_device *auxdev;
u64 saved_sst_cp_control;
u64 saved_clos_configs[4];
u64 saved_clos_assocs[4];
u64 saved_pp_control;
bool write_blocked;
};
πΈ Members πΈ
okay here's the member-by-member breakdown, bestie, every single one π«Ά
package_idβ the package id for this herepower_domainπpower_domain_idβ the power domain id. Real talk: each and every entry that comes off the SST-TPMI instance is apower_domain, iykyk.max_levelβ the max possible PP level thispower_domaincan hit π₯ratio_unitβ the ratio unit, which is how you convert stuff over to MHz πavx_levelsβ the number of AVX levels, periodtpp_block_sizeβ the block size that comes from the PP header πsst_headerβ keeps the SST header for thispower_domainstored away safelycp_headerβ keeps the SST-CP header for thispower_domainpp_headerβ keeps the SST-PP header for thispower_domainperf_levelsβ pointer to each perf level, so you can map a level over to its mmio offset βfeature_offsetsβ stores the feature offsets for each PP-levelcontrol_offsetβ stores the control offset for each PP-levelstatus_offsetβ stores the status offset for each PP-levelsst_baseβ the mapped SST base IO memory πauxdevβ the auxiliary device instance that enumerated this instancesaved_sst_cp_controlβ saves the SST-CP control configuration so it can be stored + restored across suspend/resume π΄saved_clos_configsβ saves the SST-CP CLOS configuration so it can be stored + restored across suspend/resumesaved_clos_assocsβ saves the SST-CP CLOS association so it can be stored + restored across suspend/resumesaved_pp_controlβ saves the SST-PP control information so it can be stored + restored across suspend/resumewrite_blockedβ write operation is blocked, so bestie literally cannot change the SST state, don't even try π
π Description π
so this structure is the one that stores the complete SST information for a power_domain. that info is what gets used for read/write requests for any SST IOCTL β it's giving main character energy for the whole flow β¨
and listen: each physical CPU package can have multiple power_domains. every power domain describes its own SST information, and it has its own controls. no sharing, no borrowing, everyone's got their own vibe check π§
π SEE ALSO π
Kernel file ./drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c plus these absolute icons:
struct sst_header(9)struct cp_header(9)struct pp_header(9)struct feature_offset(9)struct levels_offset(9)struct pp_control_offset(9)struct pp_status_offset(9)struct perf_level(9)struct tpmi_sst_struct(9)struct tpmi_sst_common_struct(9)map_cdies(9)map_partition_power_domain_id(9)
ngl bestie, if you got all the way down here you ate that. go read the SEE ALSOs and hydrate π§
okay bye ily β this came from ./drivers/platform/x86/intel/s... and it's dated October 2026, and it's the struct tpmi..._domain_info(9) page signing off ππ
π¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms