On 24/11/2025 12:23 pm, Jan Beulich wrote: > ... as far as we presently use them in the codebase. > > Signed-off-by: Jan Beulich <[email protected]> > --- > Or should we make both parts proper featureset elements? At least > APERFMPERF could likely be made visible to guests (in principle). > --- > v2: Use bool and unions. > > --- a/xen/include/xen/lib/x86/cpu-policy.h > +++ b/xen/include/xen/lib/x86/cpu-policy.h > @@ -121,7 +121,46 @@ struct cpu_policy > uint64_t :64, :64; /* Leaf 0x3 - PSN. */ > uint64_t :64, :64; /* Leaf 0x4 - Structured Cache. */ > uint64_t :64, :64; /* Leaf 0x5 - MONITOR. */ > - uint64_t :64, :64; /* Leaf 0x6 - Therm/Perf. */ > + > + /* Leaf 0x6 - Therm/Perf. */ > + union { > + uint32_t _6a; > + struct { > + bool :1, > + turbo:1, > + arat:1, > + :1, > + :1, > + :1, > + :1, > + hwp:1, > + hwp_notification:1, > + hwp_activity_window:1, > + hwp_epp:1, > + hwp_plr:1, > + :1, > + hdc:1, > + :1, > + :1, > + hwp_peci:1, > + :1, > + :1, > + hw_feedback:1; > + }; > + }; > + union { > + uint32_t _6b; > + }; > + union { > + uint32_t _6c; > + struct { > + bool aperfmperf:1; > + }; > + }; > + union { > + uint32_t _6d; > + };
The _6[a-d] variables are only needed for the featureset <-> policy conversion which isn't the case here (notice how you don't need it the series), and we're unlikely to want in the future. This wants to read: /* Leaf 0x6 - Therm/Perf. */ bool :1, turbo:1, arat:1, :1, :1, :1, :1, hwp:1, hwp_notification:1, hwp_activity_window:1, hwp_epp:1, hwp_plr:1, :1, hdc:1, :1, :1, hwp_peci:1, :1, :1, hw_feedback:1; uint32_t :32; /* b */ bool aperfmperf:1; uint32_t :32; /* d */ and with that, Reviewed-by: Andrew Cooper <[email protected]>
