|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 11/11] tools: enable xenpm to control the intel_pstate driver
>>> On 08.07.15 at 07:15, <wei.w.wang@xxxxxxxxx> wrote:
> On 07/07/2015 20:14, Wei Liu wrote:
>> On Tue, Jul 07, 2015 at 01:05:21PM +0100, Jan Beulich wrote:
>> > >>> On 07.07.15 at 10:55, <wei.liu2@xxxxxxxxxx> wrote:
>> > > On Thu, Jun 25, 2015 at 07:19:05PM +0800, Wei Wang wrote:
>> > >> --- a/tools/libxc/include/xenctrl.h
>> > >> +++ b/tools/libxc/include/xenctrl.h
>> > >> @@ -2266,8 +2266,18 @@ struct xc_get_cpufreq_para {
>> > >> uint32_t scaling_cur_freq;
>> > >>
>> > >> char scaling_governor[CPUFREQ_NAME_LEN];
>> > >> - uint32_t scaling_max_freq;
>> > >> - uint32_t scaling_min_freq;
>> > >> +
>> > >> + union {
>> > >> + uint32_t freq;
>> > >> + uint32_t pct;
>> > >> + } scaling_max;
>> > >> +
>> > >> + union {
>> > >> + uint32_t freq;
>> > >> + uint32_t pct;
>> > >> + } scaling_min;
>> > >> +
>> > >
>> > > Don't you need struct? I don't see how union would work for you, you
>> > > clearly need bot freq and pct at the same time.
>> >
>> > Why? The current driver uses freq; intel_pstate uses pct. What looks
>> > wrong is the code below using both fields at once.
>> >
>>
>> I only looked at this single patch.
>>
>> I got that impression from here:
>>
>> + user_para->scaling_max.freq =
>> sys_para->scaling_max.freq;
>> + user_para->scaling_min.freq =
>> sys_para->scaling_min.freq;
>> + user_para->scaling_max.pct = sys_para->scaling_max.pct;
>> + user_para->scaling_min.pct = sys_para->scaling_min.pct;
>>
>> So using union is OK, just the code is confusing.
>
> This actually functions well, we just have a redundant copy here. For
> example:
> user_para->scaling_max.freq = sys_para->scaling_max.freq;
> user_para->scaling_max.pct = sys_para->scaling_max.pct;
>
> The two sentences are doing the same thing (the memory location is the same
> for freq and pct, it just depends on the driver to put what kind of value
> (freq or pct) into the memory).
>
> If this causes some confusion, how about removing the
> "user_para->scaling_max.pct = sys_para->scaling_max.pct;" ?
Better make it
user_para->scaling_max = sys_para->scaling_max;
if at all possible. If not possible, something BUILD_BUG_ON()-like
should imo be added to make sure the fields are of equal size.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |