Implement Cx CPU idle states and updated throttling support.

* Use the cpu_idle_hook() to do idling for C1-C3.
* Use both _CST and the FADT to detect Cx states.
* Use both _PTC and P_CNT for controlling throttling.
* Add a notify handler to detect changes in _CST and _PSS
* Call the _INI function for each processor if present.  This will be
  done by ACPI-CA in the future.
* Fix a bug on SMP systems where CPUs will attach multiple times if the
  bus is rescan.
* Document new sysctls for controlling idling.
This commit is contained in:
Nate Lawson 2003-11-15 19:26:06 +00:00
parent b5049ddbf0
commit 6b74f9b7f5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=122766
4 changed files with 812 additions and 170 deletions

View File

@ -309,12 +309,6 @@ Name of the DSDT table to load, if loading is enabled.
Selectively disables portions of ACPI for debugging purposes.
.It Va hint.acpi.0.disabled
Disables all of ACPI.
.It Va hw.acpi.cpu.performance_speed
Sets the speed of the CPU, if it supports multiple speeds, while in
the performance power profile.
.It Va hw.acpi.cpu.economy_speed
Sets the speed of the CPU, if it supports multiple speeds, while in
the economy power profile.
.It Va hw.acpi.ec.poll_timeout
Delay in milliseconds to wait for the EC to respond. Try increasing this
number if you get the error
@ -332,8 +326,32 @@ Override the interrupt to use.
.It Va hw.acpi.verbose
Turn on verbose debugging information about what ACPI is doing.
.El
.Sh SYSCTLS
.Bl -tag -width indent
.It Va hw.acpi.cpu.performance_speed
Sets the speed of the CPU, if it supports multiple speeds, while in
the performance power profile.
.It Va hw.acpi.cpu.economy_speed
Sets the speed of the CPU, if it supports multiple speeds, while in
the economy power profile.
.It Va hw.acpi.cpu.cx_history
Debugging information listing all sleep states and the number of
long and short sleeps for each one.
The counters are reset when
.Va hw.acpi.cpu.cx_lowest
is modified.
.It Va hw.acpi.cpu.cx_lowest
Zero-based index of the lowest CPU idle state to use.
A value of -1 disables ACPI CPU idle states.
To enable ACPI CPU idling control,
.Va machdep.cpu_idle_hlt
must be set to 1.
.It Va hw.acpi.cpu.cx_supported
List of supported CPU idle states and their transition latency
in microseconds.
.El
.Sh COMPATIBILITY
ACPI is only found/supported on i386/ia32, ia64 and amd64.
ACPI is only found and supported on i386/ia32, ia64, and amd64.
.Sh SEE ALSO
.Xr loader.conf 5 ,
.Xr acpiconf 8 ,

View File

@ -245,6 +245,7 @@ dev/acpica/acpi_cpu.c optional acpi
dev/acpica/acpi_ec.c optional acpi
dev/acpica/acpi_isab.c optional acpi isa
dev/acpica/acpi_lid.c optional acpi
dev/acpica/acpi_package.c optional acpi
dev/acpica/acpi_pci.c optional acpi pci
dev/acpica/acpi_pci_link.c optional acpi pci
dev/acpica/acpi_pcib.c optional acpi pci

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,8 @@ SRCS+= utxface.c
# OSD layer
SRCS+= acpi.c acpi_acad.c acpi_battery.c acpi_button.c acpi_cmbat.c acpi_cpu.c
SRCS+= acpi_ec.c acpi_isab.c acpi_lid.c acpi_pci.c acpi_pcib.c acpi_pcib_acpi.c
SRCS+= acpi_ec.c acpi_isab.c acpi_lid.c
SRCS+= acpi_package.c acpi_pci.c acpi_pcib.c acpi_pcib_acpi.c
SRCS+= acpi_pcib_pci.c acpi_powerres.c acpi_resource.c acpi_thermal.c
SRCS+= acpi_timer.c acpi_pci_link.c
SRCS+= OsdDebug.c