Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Feb 2007 16:42:16 -0800
From:      Nate Lawson <nate@root.org>
To:        Max Laier <max@love2party.net>
Cc:        freebsd-current@freebsd.org, freebsd-arch@freebsd.org
Subject:   Re: PATCH - update TSC freq when cpufreq changes it
Message-ID:  <45E4CFE8.6090509@root.org>
In-Reply-To: <200702280119.08987.max@love2party.net>
References:  <45E4ADCD.4090909@root.org> <200702280119.08987.max@love2party.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Max Laier wrote:
> On Tuesday 27 February 2007 23:16, Nate Lawson wrote:
>> Attached is a patch that uses eventhandlers to update the TSC freq.
>> This is important because DELAY() uses TSC directly (on i386 and amd64)
>> but the rate calculated at boot changes if cpufreq is in use.
>>
>> It maintains current behavior that cpufreq transitions are denied if
>> TSC is the active timecounter.  The API is that there is a pre and post
>> transition eventhandler that is called by the cpufreq core.  The pre
>> handler is passed the next state (including freq, power, etc.) and can
>> store a non-zero status value in the output arg to indicate it wants to
>> reject the transition.  The post handler also is passed the next state
>> and the result of the transition (0 on success).
> 
> Any reason for passing the result to the post handler in by reference - 
> other than being able to re-use the same function type as in the pre 
> handler?  API-wise this seems to be a mistake as one consumer could mess 
> up the result for the rest and the variable name "error" in the INVOKE 
> also suggests that this could be used to report back.

Yes, the main gaol was to reuse the function.  Plus I thought in the
future there might be some conceivable need to revoke a change after it
had occurred ("oops! change right back!").  We wouldn't need to change
an API to allow that.

Unless there's a real problem with it, I'd like to keep that ability in
the API.  To make it clear though, I should probably assign error to
some tmp var and pass that in to cpufreq_post_change handlers so it has
no effect if the user overwrites it.

-- 
Nate



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45E4CFE8.6090509>