ACPI CPU
struct acpi_power_reg { uint8_t descriptor; uint16_t length; uint8_t space_id; uint8_t bit_width; uint8_t bit_offset; uint8_t access_size; uint64_t addr;};struct acpi_cpu_context { bool valid; uint8_t type; uint32_t addr; uint8_t entry_method; uint8_t index; uint32_t latency; uint8_t bm_status_skip; char desc[ACPI_CONTEXT_DESCRIPTOR_LENGTH];};struct acpi_lpi_state { uint32_t min_residency; uint32_t wake_latency; uint32_t flags; uint32_t resolution_counter_frequency; uint32_t enable_parent_state; uint64_t addr; uint8_t index; uint8_t entry_method; char desc[ACPI_CONTEXT_DESCRIPTOR_LENGTH];};struct acpi_cpu_power { size_t count; union { struct acpi_cpu_context states[ACPI_CPU_MAX_POWER]; struct acpi_lpi_state lpi_states[ACPI_CPU_MAX_POWER]; }; size_t timer_broadcast_on_state;};struct acpi_cpu_power referenced types:
struct acpi_psd_pkg { uint64_t num_entries; uint64_t revision; uint64_t domain; uint64_t coord_type; uint64_t num_cpus;};struct acpi_pct_reg { uint8_t desc; uint16_t len; uint8_t space_id; uint8_t bit_width; uint8_t bit_offset; uint8_t reserved0; uint64_t addr;};struct acpi_cpu_px { uint64_t frequency; uint64_t power; uint64_t transition_latency_us; uint64_t bus_master_latency_us; uint64_t control; uint64_t status;};struct acpi_cpu_perf { uint32_t state; uint32_t platform_limit; struct acpi_pct_reg control_reg; struct acpi_pct_reg status_reg; uint32_t state_count; struct acpi_cpu_px *states; struct acpi_psd_pkg domain_info; uint32_t type;};struct acpi_cpu_perf referenced types:
struct acpi_tsd_pkg { uint64_t num_entries; uint64_t revision; uint64_t domain; uint64_t coord_type; uint64_t num_cpus;};struct acpi_ptc_reg { uint8_t desc; uint16_t len; uint8_t space_id; uint8_t bit_width; uint8_t bit_offset; uint8_t reserved0; uint64_t addr;};struct acpi_cpu_tx_tss { uint64_t freq_pct; uint64_t power; uint64_t transition_latency_us; uint64_t control; uint64_t status;};struct acpi_cpu_tx { uint16_t power; uint16_t performance;};struct acpi_cpu_throttling { uint32_t state; uint32_t platform_limit; struct acpi_pct_reg control_reg; struct acpi_pct_reg status_reg; uint32_t state_count; struct acpi_cpu_tx_tss *states_tss; struct acpi_tsd_pkg domain_info; int32_t (*get_throttling)(struct acpi_cpu *); int32_t (*set_throttling)(struct acpi_cpu *, int32_t); uint32_t addr; uint8_t duty_offset; uint8_t duty_width; uint8_t tsd_valid_flag; uint32_t shared_type; struct acpi_cpu_tx states[ACPI_CPU_MAX_THROTTLING];};struct acpi_cpu_throttling referenced types:
struct acpi_cpu_lx { int32_t px; int32_t tx;};struct acpi_cpu_limit { struct acpi_cpu_lx state; struct acpi_cpu_lx thermal; struct acpi_cpu_lx user;};struct acpi_cpu_limit referenced types:
struct acpi_cpu_flags { uint8_t power; uint8_t perf; uint8_t throttling; uint8_t limit; uint8_t has_cst; uint8_t has_lpi; uint8_t setup;};struct acpi_cpu { cpu_id_t id; int32_t perf_throttle_limit; int32_t throttle_platform_limit; struct acpi_cpu_flags flags; struct acpi_cpu_power power; struct acpi_cpu_perf *performance; struct acpi_cpu_throttling throttling; struct acpi_cpu_limit limit;};struct acpi_cpu referenced types:
cpu_id_tstruct acpi_cpu_flagsstruct acpi_cpu_powerstruct acpi_cpu_perfstruct acpi_cpu_throttlingstruct acpi_cpu_limit
Defines
Section titled “Defines”#define ACPI_CPU_BUSY_METRIC 10#define ACPI_CPU_MAX_POWER 8#define ACPI_CPU_MAX_C2_LATENCY 100#define ACPI_CPU_MAX_C3_LATENCY 1000#define ACPI_CPU_MAX_THROTTLING 16#define ACPI_CPU_MAX_THROTTLE 100 /* 10% */#define ACPI_CPU_MAX_DUTY_WIDTH 4#define ACPI_PDC_REVISION_ID 0x1#define ACPI_PSD_REV0_REVISION 0#define ACPI_PSD_REV0_ENTRIES 5#define ACPI_TSD_REV0_REVISION 0#define ACPI_TSD_REV0_ENTRIES 5#define ACPI_CONTEXT_DESCRIPTOR_LENGTH 32