lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0iqztRWyxf1cgiAN1dK4qTGwy9raaGOx5u3tfBTGUKOng@mail.gmail.com>
Date:   Fri, 2 Aug 2019 11:17:55 +0200
From:   "Rafael J. Wysocki" <rafael@...nel.org>
To:     Viresh Kumar <viresh.kumar@...aro.org>
Cc:     Rafael Wysocki <rjw@...ysocki.net>,
        Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>,
        Len Brown <lenb@...nel.org>,
        Linux PM <linux-pm@...r.kernel.org>,
        Vincent Guittot <vincent.guittot@...aro.org>,
        "v4 . 18+" <stable@...r.kernel.org>,
        Doug Smythies <doug.smythies@...il.com>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH V3 2/2] cpufreq: intel_pstate: Implement ->resolve_freq()

On Fri, Aug 2, 2019 at 7:44 AM Viresh Kumar <viresh.kumar@...aro.org> wrote:
>
> Intel pstate driver exposes min_perf_pct and max_perf_pct sysfs files,
> which can be used to force a limit on the min/max P state of the driver.
> Though these files eventually control the min/max frequencies that the
> CPUs will run at, they don't make a change to policy->min/max values.

That's correct.

> When the values of these files are changed (in passive mode of the
> driver), it leads to calling ->limits() callback of the cpufreq
> governors, like schedutil. On a call to it the governors shall
> forcefully update the frequency to come within the limits.

OK, so the problem is that it is a bug to invoke the governor's ->limits()
callback without updating policy->min/max, because that's what
"limits" mean to the governors.

Fair enough.

> For getting the value within limits, the schedutil governor calls
> cpufreq_driver_resolve_freq(), which eventually tries to call
> ->resolve_freq() callback for this driver. Since the callback isn't
> present, the schedutil governor fails to get the target freq within
> limit and sometimes aborts the update believing that the frequency is
> already set to the target value.
>
> This patch implements the resolve_freq() callback, so the correct target
> frequency can be returned by the driver and the schedutil governor gets
> the frequency within limits immediately.

So the problem is that ->resolve_freq() adds overhead and it adds that
overhead even if the limits don't change.  It just sits there and computes
things every time even if that is completely redundant.

So no, this is not the right way to fix it IMO.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ