xref: /linux/Documentation/netlink/specs/dev-energymodel.yaml (revision b62ce2547fe8a8ba15857bb974bcad250c5420d6)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2#
3# Copyright (c) 2025 Valve Corporation.
4#
5---
6name: dev-energymodel
7
8doc: |
9  Energy model netlink interface to notify its changes.
10
11protocol: genetlink
12
13uapi-header: linux/dev_energymodel.h
14
15definitions:
16  -
17    type: flags
18    name: perf-state-flags
19    entries:
20      -
21        name: perf-state-inefficient
22        doc: >-
23          The performance state is inefficient. There is in this perf-domain,
24          another performance state with a higher frequency but a lower or
25          equal power cost.
26  -
27    type: flags
28    name: perf-domain-flags
29    entries:
30      -
31        name: perf-domain-microwatts
32        doc: >-
33          The power values are in micro-Watts or some other scale.
34      -
35        name: perf-domain-skip-inefficiencies
36        doc: >-
37          Skip inefficient states when estimating energy consumption.
38      -
39        name: perf-domain-artificial
40        doc: >-
41          The power values are artificial and might be created by platform
42          missing real power information.
43
44attribute-sets:
45  -
46    name: perf-domain
47    doc: >-
48      Information on a single performance domains.
49    attributes:
50      -
51        name: pad
52        type: pad
53      -
54        name: perf-domain-id
55        type: u32
56        doc: >-
57          A unique ID number for each performance domain.
58      -
59        name: flags
60        type: u64
61        doc: >-
62          Bitmask of performance domain flags.
63        enum: perf-domain-flags
64      -
65        name: cpus
66        type: u64
67        multi-attr: true
68        doc: >-
69          CPUs that belong to this performance domain.
70  -
71    name: perf-table
72    doc: >-
73      Performance states table.
74    attributes:
75      -
76        name: perf-domain-id
77        type: u32
78        doc: >-
79          A unique ID number for each performance domain.
80      -
81        name: perf-state
82        type: nest
83        nested-attributes: perf-state
84        multi-attr: true
85  -
86    name: perf-state
87    doc: >-
88      Performance state of a performance domain.
89    attributes:
90      -
91        name: pad
92        type: pad
93      -
94        name: performance
95        type: u64
96        doc: >-
97          CPU performance (capacity) at a given frequency.
98      -
99        name: frequency
100        type: u64
101        doc: >-
102          The frequency in KHz, for consistency with CPUFreq.
103      -
104        name: power
105        type: u64
106        doc: >-
107          The power consumed at this level (by 1 CPU or by a registered
108          device). It can be a total power: static and dynamic.
109      -
110        name: cost
111        type: u64
112        doc: >-
113          The cost coefficient associated with this level, used during energy
114          calculation. Equal to: power * max_frequency / frequency.
115      -
116        name: flags
117        type: u64
118        doc: >-
119          Bitmask of performance state flags.
120        enum: perf-state-flags
121
122operations:
123  list:
124    -
125      name: get-perf-domains
126      attribute-set: perf-domain
127      doc: Get the list of information for all performance domains.
128      do:
129        request:
130          attributes:
131            - perf-domain-id
132        reply:
133          attributes: &perf-domain-attrs
134            - pad
135            - perf-domain-id
136            - flags
137            - cpus
138      dump:
139        reply:
140          attributes: *perf-domain-attrs
141    -
142      name: get-perf-table
143      attribute-set: perf-table
144      doc: Get the energy model table of a performance domain.
145      do:
146        request:
147          attributes:
148            - perf-domain-id
149        reply:
150          attributes:
151            - perf-domain-id
152            - perf-state
153    -
154      name: perf-domain-created
155      doc: A performance domain is created.
156      notify: get-perf-table
157      mcgrp: event
158    -
159      name: perf-domain-updated
160      doc: A performance domain is updated.
161      notify: get-perf-table
162      mcgrp: event
163    -
164      name: perf-domain-deleted
165      doc: A performance domain is deleted.
166      attribute-set: perf-table
167      event:
168        attributes:
169          - perf-domain-id
170      mcgrp: event
171
172mcast-groups:
173  list:
174    -
175      name: event
176