|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH v3 01/15] xen/cpufreq: introduces XEN_PM_PSD for solely delivery of _PSD
[Public]
Hi,
> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Monday, March 24, 2025 10:09 PM
> To: Penny, Zheng <penny.zheng@xxxxxxx>
> Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Andrew Cooper
> <andrew.cooper3@xxxxxxxxxx>; Roger Pau Monné <roger.pau@xxxxxxxxxx>;
> Anthony PERARD <anthony.perard@xxxxxxxxxx>; Orzel, Michal
> <Michal.Orzel@xxxxxxx>; Julien Grall <julien@xxxxxxx>; Stefano Stabellini
> <sstabellini@xxxxxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH v3 01/15] xen/cpufreq: introduces XEN_PM_PSD for solely
> delivery of _PSD
>
> On 06.03.2025 09:39, Penny Zheng wrote:
> > --- a/xen/include/public/platform.h
> > +++ b/xen/include/public/platform.h
> > @@ -363,12 +363,12 @@
> DEFINE_XEN_GUEST_HANDLE(xenpf_getidletime_t);
> > #define XEN_PM_PX 1
> > #define XEN_PM_TX 2
> > #define XEN_PM_PDC 3
> > +#define XEN_PM_PSD 4
> >
> > /* Px sub info type */
> > #define XEN_PX_PCT 1
> > #define XEN_PX_PSS 2
> > #define XEN_PX_PPC 4
> > -#define XEN_PX_PSD 8
> >
> > struct xen_power_register {
> > uint32_t space_id;
> > @@ -439,6 +439,7 @@ struct xen_psd_package {
> > uint64_t coord_type;
> > uint64_t num_processors;
> > };
> > +typedef struct xen_psd_package xen_psd_package_t;
> >
> > struct xen_processor_performance {
> > uint32_t flags; /* flag for Px sub info type */
> > @@ -447,12 +448,6 @@ struct xen_processor_performance {
> > struct xen_pct_register status_register;
> > uint32_t state_count; /* total available performance states */
> > XEN_GUEST_HANDLE(xen_processor_px_t) states;
> > - struct xen_psd_package domain_info;
> > - /* Coordination type of this processor */
> > -#define XEN_CPUPERF_SHARED_TYPE_HW 1 /* HW does needed
> coordination */
> > -#define XEN_CPUPERF_SHARED_TYPE_ALL 2 /* All dependent CPUs
> should
> > set freq */ -#define XEN_CPUPERF_SHARED_TYPE_ANY 3 /* Freq can be set
> from any dependent CPU */
> > - uint32_t shared_type;
> > };
> > typedef struct xen_processor_performance xen_processor_performance_t;
> > DEFINE_XEN_GUEST_HANDLE(xen_processor_performance_t);
> > @@ -463,9 +458,15 @@ struct xenpf_set_processor_pminfo {
> > uint32_t type; /* {XEN_PM_CX, XEN_PM_PX} */
> > union {
> > struct xen_processor_power power;/* Cx: _CST/_CSD */
> > - struct xen_processor_performance perf; /* Px:
> > _PPC/_PCT/_PSS/_PSD
> */
> > + xen_psd_package_t domain_info; /* _PSD */
> > + struct xen_processor_performance perf; /* Px: _PPC/_PCT/_PSS/ */
> > XEN_GUEST_HANDLE(uint32) pdc; /* _PDC */
> > } u;
> > + /* Coordination type of this processor */
> > +#define XEN_CPUPERF_SHARED_TYPE_HW 1 /* HW does needed
> coordination */
> > +#define XEN_CPUPERF_SHARED_TYPE_ALL 2 /* All dependent CPUs
> should
> > +set freq */ #define XEN_CPUPERF_SHARED_TYPE_ANY 3 /* Freq can be
> set from any dependent CPU */
> > + uint32_t shared_type;
> > };
> > typedef struct xenpf_set_processor_pminfo
> > xenpf_set_processor_pminfo_t;
> > DEFINE_XEN_GUEST_HANDLE(xenpf_set_processor_pminfo_t);
>
> With this change to stable hypercall structures, how is an older Dom0 kernel
> going
> to be able to properly upload the necessary data? IOW: No, you can't alter
> existing
> stable hypercall structures like this.
>
Understood.
I'll expand the newly added "struct xen_processor_cppc", to let it also include
_PSD info
and shared type
```
+struct xen_processor_cppc {
+ uint8_t flags; /* flag for CPPC sub info type */
+ /*
+ * Subset _CPC fields useful for CPPC-compatible cpufreq
+ * driver's initialization
+ */
+ struct {
+ uint32_t highest_perf;
+ uint32_t nominal_perf;
+ uint32_t lowest_nonlinear_perf;
+ uint32_t lowest_perf;
+ uint32_t lowest_mhz;
+ uint32_t nominal_mhz;
+ } cpc;
+ struct xen_psd_package domain_info; /* _PSD */
+ /* Coordination type of this processor */
+ uint32_t shared_type;
+};
+typedef struct xen_processor_cppc xen_processor_cppc_t;
```
> Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |