History log of /src/sys/dev/acpi/acpi_cpu_pstate.c |
Revision | | Date | Author | Comments |
1.54 |
| 07-Dec-2020 |
jmcneill | acpicpu: Add support for ACPI P-states and T-states on Arm.
|
1.53 |
| 15-Nov-2011 |
jruoho | branches: 1.53.66; Add comment.
|
1.52 |
| 18-Oct-2011 |
jruoho | branches: 1.52.2; Convert to use cpufreq(9).
|
1.51 |
| 22-Jun-2011 |
jruoho | Get rid of RUN_ONCE(9). Should fix PR # kern/44043.
|
1.50 |
| 22-Jun-2011 |
jruoho | Contrary to the previous, use aprint_error(9) but suppress warnings caused by the (optional) BIOS-based dynamic voltage and frequency scaling.
|
1.49 |
| 04-Jun-2011 |
jruoho | Change some printfs to aprint_debug(9).
|
1.48 |
| 01-Apr-2011 |
jruoho | branches: 1.48.2; Maintain the state properly during firmware-based DVFS.
|
1.47 |
| 19-Mar-2011 |
jruoho | Like in rest of the acpi(4) stack, queue all resume hooks.
|
1.46 |
| 17-Mar-2011 |
jruoho | Properly set the frequency during suspend and resume. Should fix problems introduced in the revision 1.42. Pointed out by Taylor C. Campbell.
|
1.45 |
| 05-Mar-2011 |
jruoho | branches: 1.45.2; Add __cpu_simple_lock_t. Use it, x86_read_psl(), and x86_disable_intr() to disable interrupts locally and protect the access to APERF and MPERF. Also rationalize the MD initialization sequence.
|
1.44 |
| 01-Mar-2011 |
jruoho | Move also the evcnt(9) event counters to one place. No functional change.
|
1.43 |
| 01-Mar-2011 |
jruoho | Simplify by moving the debug printfs to one place. No functional change.
|
1.42 |
| 01-Mar-2011 |
jruoho | Move the xcall(9) that does the P- and T-state transformations from the MD layer to the main code. Makes the caches coherent and provides consistent vmstat(1) output. This is still not quite right, given that most of the cross-calls are typically unnecessary with the dependency coordination.
|
1.41 |
| 27-Feb-2011 |
jruoho | Move acpicpu(4) from "acpinodebus" to "cpufeaturebus".
|
1.40 |
| 25-Feb-2011 |
jruoho | Start to derive the percpu(9) (or per-domain) state coordination mechanisms by parsing the _CSD, _PSD, and _TSD objects by default.
|
1.39 |
| 25-Feb-2011 |
jruoho | Add preliminary support for the IA32_APERF and IA32_MPERF frequency counters. These are not yet used for anything and only Intel is supported at the moment.
|
1.38 |
| 23-Feb-2011 |
jruoho | Lower the worst-case latency in P- and T-state transitions to 1 usec. The previous 10 usec was based on the Intel's Core family. It may have been improved since that. Also provide an arbitrary upper bound for BIOS bugs.
|
1.37 |
| 30-Jan-2011 |
jruoho | Improve error reporting.
|
1.36 |
| 30-Dec-2010 |
jruoho | branches: 1.36.2; 1.36.4; Change the default behavior to enforce the maximum frequency when the firmware requests to do so. This cures severe overhating (> 120 C) observed on many laptops, being also on par with the specification(s). This can be reverted by using the new "hw.acpi.cpu.dynamic" sysctl variable.
|
1.35 |
| 20-Dec-2010 |
jruoho | Use branch annotations in couple of places. Add two comments.
|
1.34 |
| 28-Oct-2010 |
jruoho | Only override data from XPSS if the conventional _PSS did not contain the required information. Problem found and diagnosed by jakllsch@; on some AMD systems vendors fill _PSS correctly, but do not duplicate the data in XPSS.
|
1.33 |
| 21-Aug-2010 |
jmcneill | - don't clobber the data found by _PSS if XPSS validation fails - XPSS spec says that Status{,Mask} and Control{,Mask} buffers are 8 bytes - use ACPI_GET64 macros instead of memcpy when reading from buffers
This makes acpicpu work again on my VIA C7-M, whose firmware reports malformed XPSS packages but has a working _PSS
|
1.32 |
| 20-Aug-2010 |
jruoho | Give a hint about a driver conflict.
|
1.31 |
| 20-Aug-2010 |
jruoho | Check the cached value also when setting a state.
|
1.30 |
| 18-Aug-2010 |
jruoho | Use the idea from cegger@ and fill the (X)PSS structure during initialization.
|
1.29 |
| 17-Aug-2010 |
jruoho | Adjust locking for previous.
|
1.28 |
| 17-Aug-2010 |
jruoho | Clarify the initialization of the dynamic maximums/minimums. Reset these to defaults upon suspend. As we do not know how well the firmware maintains state, do not run the callbacks that evaluate the maximum/minimum on resume.
|
1.27 |
| 17-Aug-2010 |
jruoho | Add support for the optional dynamic minimum (in terms of MHz) via _PDL. Comparable to T-states, this gives effectively a window of available performance states for passive cooling. An example:
Init: max = 0, min = Pn.
Time j. Time j + 1. ----------- ----------- 2000 MHz P0 max P0 P1 P1 max P2 ==> P2 P3 P3 min P4 P4 P5 min P5 500 Mhz Pn Pn ----------- -----------
Search: repeat (i = P0; i <= P5) repeat (i = P1; i <= P3)
|
1.26 |
| 16-Aug-2010 |
jruoho | branches: 1.26.2; Fix comments.
|
1.25 |
| 16-Aug-2010 |
jruoho | Two changes:
1. Initialize P-states properly to P0. It is processor-specific what value we might get without initialization. (Some AMD CPUs have even specific registers for the state after cold reset.)
2. Following design notes for Windows, set the lowest-power P-state upon suspend and restore the saved state after resume.
|
1.24 |
| 16-Aug-2010 |
jruoho | Now that the deferred configuration actually works as expected and documented, use config_defer(9) instead of config_finalize_register(9), and simplify the code paths around the initialization.
|
1.23 |
| 16-Aug-2010 |
jmcneill | make it compile again
|
1.22 |
| 16-Aug-2010 |
jruoho | If XPSS is used, only invalidate P-states if the control MSR address is zero. If the status address is zero, we will bluntly bypass the transition check.
|
1.21 |
| 16-Aug-2010 |
jruoho | Add support for Extended PSS ACPI Method Specification from Microsoft. This will greatly simplify supporting PowerNow! on conforming systems.
|
1.20 |
| 16-Aug-2010 |
jruoho | Do not error out neither in P-states nor in T-states if the method for the dynamic maximum is nonexistent. Unsurprisingly, there is vagueness in the standards; in ACPI 3.0 and 4.0 it is clearly indicated that also these methods must be present, but the earlier standards are less stringent. Without too much effort, at least one old P4-system was located that lacks _PPC.
|
1.19 |
| 14-Aug-2010 |
jruoho | Do not accidentally write zeros to (PSTATE_CNT and CST_CNT) registers.
|
1.18 |
| 14-Aug-2010 |
jruoho | Do not queue functions via sysmon_taskq(9) in the pmf(9) resume hooks. There is a small and unlikely race when the drivers are loaded as modules; suspend, resume, queue a function, and immediately unload the module.
|
1.17 |
| 13-Aug-2010 |
jruoho | Instead of packing structures that do not need to be __packed, remove two CTASSERT(9) macros. Fixes build failure on AMD64 noted by cegger@.
|
1.16 |
| 13-Aug-2010 |
jruoho | Remove some unnecessary locking. Mainly a leftover from previous revisions where the dynamic maximum/minimum was used also when retrieving the current state. The state-array itself changes only in C-states.
|
1.15 |
| 13-Aug-2010 |
jruoho | Merge T-state a.k.a. throttling support for acpicpu(4).
Remarks:
1. Native instructions are supported only on Intel. Native support for other x86 vendors will be investigated. By assumption, AMD and others use the I/O based approach.
2. The existing code, INTEL_ONDEMAND_CLOCKMOD, must be disabled in order to use acpicpu(4). Otherwise fatal MSR races may occur. Unlike with P-states, no attempt is done to disable the existing implementation.
3. There is no rationale to export controls to user land.
4. Throttling is an artefact from the past. T-states will not be used for power management per se. For CPU frequency management, P-states are preferred in all circumstances. No noticeable additional power savings were observed in various experiments. When the system has been scaled to the highest (i.e. lowest power) P-state, it is preferable to move from C0 to deeper C-states than it is to actively throttle the CPU.
5. But T-states need to be implemented for passive cooling via acpitz(4). As specified by ACPI and Intel documents, these can be used as the last line of defence against critical thermal conditions. Support for this will be added later.
|
1.14 |
| 12-Aug-2010 |
jruoho | Three small things: (1) fix off by one, (2) protect the cached P-state (required for interaction with T-states), and (3) use aprint_debug(9) instead of the ACPI_DEBUG_PRINT(x) macro for the dynamic frequency changes (for the time being, people need easier way to observe the dynamic changes).
|
1.13 |
| 11-Aug-2010 |
jruoho | branches: 1.13.2; Properly protect against garbage values.
|
1.12 |
| 11-Aug-2010 |
jruoho | Print the state information only once. The per-CPU information was quite pointless as identical parameters are expected across processors.
|
1.11 |
| 11-Aug-2010 |
jruoho | Check the 'sc->sc_cold' flag also in P-state code, and set this flag once we start the detachment routine.
|
1.10 |
| 11-Aug-2010 |
jruoho | Add a small additional check for the validity of the GAS register.
|
1.9 |
| 11-Aug-2010 |
jruoho | Use a define instead of a magic constant for the arbitrary P-state limit.
|
1.8 |
| 11-Aug-2010 |
jruoho | Pretty printing.
|
1.7 |
| 10-Aug-2010 |
jruoho | Use evcnt(9) for the counters.
|
1.6 |
| 09-Aug-2010 |
jruoho | On systems where both the existing EST code and the one provided by ACPI are functional, the previously loaded EST code may have used frequencies that are not present in the BIOS. This will cause failures since acpicpu(4) will treat these unknown frequencies as errors. "Fix" this by initializing the cached P-state to P0, regardless of what the true state might be.
|
1.5 |
| 09-Aug-2010 |
jruoho | When retrieving the current frequency, scan all available P-states. Only use the dynamic maximum when setting a frequency.
|
1.4 |
| 08-Aug-2010 |
jruoho | Improve error and debug messages.
|
1.3 |
| 08-Aug-2010 |
jruoho | As per jmcneill@'s suggestion, improve error reporting.
|
1.2 |
| 08-Aug-2010 |
jruoho | Remove bogus check and allow all CPUs to use I/O-based P-states.
|
1.1 |
| 08-Aug-2010 |
jruoho | Merge P-state support for acpicpu(4).
Remarks:
1. All processors (x86 or not) for which the vendor has implemented ACPI I/O access routines are supported. Native instructions are currently supported only for Intel's "Enhanced Speedstep". Code for "PowerNow!" (AMD) will be merged later. Native support for VIA's "PowerSaver" will be investigated.
2. Backwards compatibility with existing userland code is maintained. Comparable to the case with cpu_idle(9), the ACPI CPU driver installs alternative functions for the existing sysctl(8) controls. The "native" behavior (if any) is restored upon detachment.
3. The dynamic nature of ACPI-provided P-states needs more investigation. The maximum frequency induced (but not forced) by the firmware may change dynamically. Currently, the sysctl(8) controls error out with a value larger than the dynamic maximum. The code itself does not however yet react to the notifications from the firmware by changing the frequencies in-place. Presumably the system administrator should be able to choose whether to use dynamic or static frequencies.
|
1.13.2.3 |
| 09-Oct-2010 |
yamt | sync with head
|
1.13.2.2 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.13.2.1 |
| 11-Aug-2010 |
yamt | file acpi_cpu_pstate.c was added on branch yamt-nfs-mp on 2010-08-11 22:53:15 +0000
|
1.26.2.4 |
| 06-Nov-2010 |
uebayasi | Sync with HEAD.
|
1.26.2.3 |
| 22-Oct-2010 |
uebayasi | Sync with HEAD (-D20101022).
|
1.26.2.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.26.2.1 |
| 16-Aug-2010 |
uebayasi | file acpi_cpu_pstate.c was added on branch uebayasi-xip on 2010-08-17 06:45:59 +0000
|
1.36.4.2 |
| 05-Mar-2011 |
bouyer | Sync with HEAD
|
1.36.4.1 |
| 08-Feb-2011 |
bouyer | Sync with HEAD
|
1.36.2.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.45.2.5 |
| 12-Jun-2011 |
rmind | sync with head
|
1.45.2.4 |
| 21-Apr-2011 |
rmind | sync with head
|
1.45.2.3 |
| 06-Mar-2011 |
rmind | sync with head (and fix few botches with this)
|
1.45.2.2 |
| 05-Mar-2011 |
rmind | sync with head
|
1.45.2.1 |
| 05-Mar-2011 |
rmind | file acpi_cpu_pstate.c was added on branch rmind-uvmplock on 2011-03-05 20:53:02 +0000
|
1.48.2.1 |
| 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.52.2.1 |
| 17-Apr-2012 |
yamt | sync with head
|
1.53.66.1 |
| 14-Dec-2020 |
thorpej | Sync w/ HEAD.
|