RE: [PATCH] cpufreq: intel_pstate: Fix rounding of core_pct

From: Doug Smythies
Date: Fri Jun 13 2014 - 10:36:28 EST



On 2014.06.12 06:49 Dirk Brandewie wrote:
> On 06/12/2014 01:03 PM, Rafael J. Wysocki wrote:
>> On Thursday, June 12, 2014 05:35:59 PM Stratos Karafotis wrote:
>>> On 12/06/2014 12:15 ÏÎ, Doug Smythies wrote:

>>>>> Could you please elaborate a little bit more what we need these 2 lines below?
>>>>>

> Sorry for being MIA on this thread I have been up to my eyeballs.

>>>> if ((rem << 1) >= int_tofp(sample->mperf))
>>>> core_pct += 1;

> The rounding should have been
> core_pct += (1 << (FRAC_BITS-1));
> Since core_pct is is in fixeded point notation at this point. Adding .5 to
> core_pct to round up.

> As Stratos pointed out the the current code only adds 1/256 to core_pct

> Since core_pct_busy stays in fixed point through out the rest of the
> calculations ans we only do the rounding when the PID is returning an
> int I think we can safely remove these two lines.

Absolutely, no.

That code was doing exactly what I wanted it to do.
But, as and I have already admitted, it was overkill, and yes the entire thing
can be changed to use div_64 instead.

We do not want to add 1/2 to core percent here at this spot.
You would just be bringing back the arbitrary and incorrect biasing
of core_pct upwards that used to be there in two spots before.

You would add 1/2 when you want to convert to an integer, not before (and we don't right now, for the call to trace_pstate_sample).

... Doug


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/