|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 3/6] x86: Define some Intel vPMU leafs
Le 24/03/2026 à 10:25, Jan Beulich a écrit :
> On 10.03.2026 17:44, Teddy Astie wrote:
>> --- a/xen/include/xen/lib/x86/cpu-policy.h
>> +++ b/xen/include/xen/lib/x86/cpu-policy.h
>> @@ -162,7 +162,15 @@ struct cpu_policy
>> uint64_t :64, :64; /* Leaf 0x9 - DCA */
>>
>> /* Leaf 0xa - Intel PMU. */
>> - uint8_t pmu_version, _pmu[15];
>> + struct {
>> + uint8_t /* a */ version, num_gp_ctrs, gp_ctr_width,
>> + event_enum_length;
>> + uint32_t /* b */:32;
>> + uint32_t /* c */ fixed_ctr_mask;
>> + uint32_t /* d */ num_fixed_ctr:5, fixed_ctr_width:8, :1,
>> + anythread_depreciation:1, slots_per_cyc:4,
>> + :13;
>> + } pmu;
>
> Style-wise this looks to follow e.g. the cache leaf, so perhaps okay, even
> if I would have preferred you to follow what we did for leaf 6.
My idea was to put all that as .pmu.*, so I wouldn't need to prefix
everything with "pmu_". I'm not sure if you're talking about a different
approach.
> The named> boolean field, however, wants to be of type bool.
Which fields ?
> And then the unnamed 1-bit> field really wants to be 2 bits, for
anythread_depreciation to be bit 15
> (etc).
>
Ah yes thanks, I got confused with the fields size for a second.
I also found that slots_per_cyc is 3 bits instead of 4.
I think this diff fixes it overall.
diff --git a/xen/include/xen/lib/x86/cpu-policy.h
b/xen/include/xen/lib/x86/cpu-policy.h
index 9161e2ad8d..796c2edb0e 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -167,9 +167,9 @@ struct cpu_policy
event_enum_length;
uint32_t /* b */:32;
uint32_t /* c */ fixed_ctr_mask;
- uint32_t /* d */ num_fixed_ctr:5, fixed_ctr_width:8, :1,
- anythread_depreciation:1, slots_per_cyc:4,
- :13;
+ uint32_t /* d */ num_fixed_ctr:5, fixed_ctr_width:8, :2,
+ anythread_depreciation:1, slots_per_cyc:3,
+ :11;
} pmu;
uint64_t :64, :64; /* Leaf 0xb - Topology. */
Making the first edx reserved gap actually 2 bits, slots_per_cyc
actually 3 bits and adjusting the end reserved part that is actually 11
bits.
> Jan
>
Teddy
--
Teddy Astie | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |