|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 8/9] x86/intel_pstate: support the use of intel_pstate in pmstat.c
>>> On 26.10.15 at 08:59, <wei.w.wang@xxxxxxxxx> wrote:
> On 26/10/2015 15:03, Jan Beulich wrote:
>> >>> "Wang, Wei W" <wei.w.wang@xxxxxxxxx> 10/26/15 7:27 AM >>>
>> >On 08/10/2015 12:11, Jan Beulich wrote:
>> >> >>> On 14.09.15 at 04:32, <wei.w.wang@xxxxxxxxx> wrote:
>> >> > - new_policy.governor = __find_governor(op-
>> >u.set_gov.scaling_governor);
>> >> > - if (new_policy.governor == NULL)
>> >> > - return -EINVAL;
>> >> > + if ( internal_gov && internal_gov->cur_gov )
>> >> > + {
>> >> > + if ( !strnicmp(op->u.set_gov.scaling_governor,
>> >> > + "performance", CPUFREQ_NAME_LEN) )
>> >> > + internal_gov->cur_gov = INTERNAL_GOV_PERFORMANCE;
>> >> > + else if ( !strnicmp(op->u.set_gov.scaling_governor,
>> >> > + "powersave", CPUFREQ_NAME_LEN) )
>> >> > + internal_gov->cur_gov = INTERNAL_GOV_POWERSAVE;
>> >> > + else if ( !strnicmp(op->u.set_gov.scaling_governor,
>> >> > + "userspace", CPUFREQ_NAME_LEN) )
>> >> > + internal_gov->cur_gov = INTERNAL_GOV_USERSPACE;
>> >> > + else if ( !strnicmp(op->u.set_gov.scaling_governor,
>> >> > + "ondemand", CPUFREQ_NAME_LEN) )
>> >> > + internal_gov->cur_gov = INTERNAL_GOV_ONDEMAND;
>> >>
>> >> Wouldn't this better be done by the internal governor's code, so it
>> >> can also for itself decide which of the kinds it may not want to support?
>> >
>> >I think it should be pmstat.c-'s job here to set "
>> >internal_gov->cur_gov", which is later passed to the internal
>> >governor's implementation code, who then decides how to deal with the
>> requested governor in "internal_gov->cur_gov".
>>
>> Which it then is able to communicate in which way? Without itself adjusting
>> ->cur_gov again?
>
> In this way:
> pmstat.c gets the string-represented governor adjusting request from the
> upper layer, parses it to the number-represented value (INTERNAL_GOV_), and
> feeds the number-represented one to the driver's internal governor
> implementation. If the internal governor implementation doesn't support the
> passed INTERNAL_GOV_XX, i.e. INTERNAL_GOV_XX goes to the "default:" section
> of the "switch()", which adjusts the internal_gov->cur_gov to the default
> one,
> e.g. INTERNAL_GOV_ONDEMAND.
Well, okay, I'm tired of discussing issues like this.
>> >> > @@ -309,23 +326,13 @@ struct xen_get_cpufreq_para {
>> >> > XEN_GUEST_HANDLE_64(uint32) scaling_available_frequencies;
>> >> > XEN_GUEST_HANDLE_64(char) scaling_available_governors;
>> >> > char scaling_driver[CPUFREQ_NAME_LEN];
>> >> > -
>> >> > - uint32_t cpuinfo_cur_freq;
>> >> > - uint32_t cpuinfo_max_freq;
>> >> > - uint32_t cpuinfo_min_freq;
>> >> > - uint32_t scaling_cur_freq;
>> >> > -
>> >> > char scaling_governor[CPUFREQ_NAME_LEN];
>> >> > - uint32_t scaling_max_freq;
>> >> > - uint32_t scaling_min_freq;
>> >> >
>> >> > /* for specific governor */
>> >> > union {
>> >> > struct xen_userspace userspace;
>> >> > struct xen_ondemand ondemand;
>> >> > } u;
>> >> > -
>> >> > - int32_t turbo_enabled;
>> >> > };
>> >>
>> >> Is all of this re-arrangement really needed? Also can't turbo_enabled
>> >> and scaling_turbo_pct be combined into a single field?
>> >
>> >Personally, we should not combine the two.
>> > turbo_enabled is used by both the old pstate driver and intel_pstate,
>> >but scaling_turbo_pct is only used in intel_pstate. If we use
>> "scaling_turbo_pct=0"
>> > to represent "turbo_enabled=0", and "scaling_turbo_pct>0" to represent
>> >" turbo_enabled=1", then we will need to modify the old driver to use
>> >scaling_turbo_pct, i.e. changing the old driver to be aware of the
>> >"percentage"
>> > concept, which is proposed in intel_pstate. On the other side, I think
>> >keeping turbo_enabled and scaling_turbo_pct separated makes the code
>> easier to read.
>>
>> Note that "combine" doesn't necessarily mean "eliminate the old one" - they
>> could as well become field of a union. The basic question you should ask
>> yourself in such cases is: "Do both fields have a meaning at the same time?"
>> If
>> the answer is yes, then of course they should remain separate. If the answer
>> is
>> no _and_ their purpose is reasonably similar, then combining them should at
>> least be considered.
>
> Ok. I will keep the two separated, since they do have their own meaning at
> the same time.
Being which?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |