freebsd-nq/sys/dev/acpica
Alexander Motin 3c5c555957 Add several performance optimizations to acpi_cpu_idle().
For C1 and C2 states use cpu_ticks() to measure sleep time instead of much
slower ACPI timer. We can't do it for C3, as TSC may stop there. But it is
less important there as wake up latency is high any way.

For C1 and C2 states do not check/clear bus mastering activity status, as
it is important only for C3. As side effect it can make CPU enter C2 instead
of C3 if last BM activity was two sleeps back (unlike one before), but
that may be even good because of collecting more statistics. Premature BM
wakeup from C3, entered because of overestimation, can easily be worse then
entering C2 from both performance and power consumption points of view.

Together on dual Xeon E5645 system on sequential 512 bytes read test this
change makes cpu_idle_acpi() as fast as simplest cpu_idle_hlt() and only
few percents slower then cpu_idle_mwait(), while deeper states are still
actively used during idle periods.

To help with diagnostics, add C-state type into dev.cpu.X.cx_supported.

Sponsored by:	iXsystems, Inc.
2012-07-31 10:58:50 +00:00
..
Osd Consistently use ACPI_SUCCESS() and ACPI_FAILURE() macros wherever possible. 2012-06-01 21:33:33 +00:00
acpi_acad.c
acpi_battery.c Prevent a division by zero with some broken batteries 2011-11-26 13:43:50 +00:00
acpi_button.c Merge ACPICA 20101209. 2010-12-15 23:48:45 +00:00
acpi_cmbat.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
acpi_cpu.c Add several performance optimizations to acpi_cpu_idle(). 2012-07-31 10:58:50 +00:00
acpi_dock.c Remove unused assignment. 2010-06-11 19:53:42 +00:00
acpi_ec.c Consistently use ACPI_SUCCESS() and ACPI_FAILURE() macros wherever possible. 2012-06-01 21:33:33 +00:00
acpi_hpet.c ServerWorks HT1000 HPET reported to have problems with IRQs >= 16. 2012-03-10 21:08:07 +00:00
acpi_hpet.h Always check current HPET counter value after comparator programming to 2011-08-16 21:51:29 +00:00
acpi_if.m Remove PCI_SET_POWERSTATE method from acpi.c and eradicate all PCI-specific 2010-10-19 19:53:06 +00:00
acpi_isab.c - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
acpi_lid.c Merge ACPICA 20100702. 2010-07-06 20:57:28 +00:00
acpi_package.c
acpi_pci_link.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
acpi_pci.c - Add a bus_dma tag to each PCI bus that is a child of a Host-PCI bridge. 2012-03-02 20:38:04 +00:00
acpi_pcib_acpi.c Use a more proper fix for enabling HT MSI mapping windows on Host-PCI 2012-03-29 19:03:22 +00:00
acpi_pcib_pci.c Reimplement how PCI-PCI bridges manage their I/O windows. Previously the 2011-05-03 17:37:24 +00:00
acpi_pcib.c Add a new method to the PCI bridge interface, PCIB_POWER_FOR_SLEEP(). This 2010-08-17 15:44:52 +00:00
acpi_pcibvar.h Add a new method to the PCI bridge interface, PCIB_POWER_FOR_SLEEP(). This 2010-08-17 15:44:52 +00:00
acpi_perf.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
acpi_powerres.c Remove variables which are initialized but never used thereafter 2012-07-07 17:13:09 +00:00
acpi_quirk.c
acpi_quirks
acpi_resource.c Fix build with ACPI_DEBUG defined. 2011-06-21 21:30:20 +00:00
acpi_smbat.c Centralize declaration of the debug.acpi sysctl node. 2012-05-17 17:58:53 +00:00
acpi_smbus.h
acpi_thermal.c - be more precise about the unit of measurement 2011-11-17 23:04:43 +00:00
acpi_throttle.c
acpi_timer.c Refine r231226. Swap timecounters before suspending any device drivers. 2012-02-09 17:38:08 +00:00
acpi_video.c Resotre LCD brightness level on resuming. 2012-06-17 16:19:09 +00:00
acpi.c Execute AcpiLeaveSleepStatePrep() for S1 and reduce code duplication. 2012-06-01 17:00:33 +00:00
acpiio.h small cleanup of acpi battery status setting and checking 2010-12-17 16:21:30 +00:00
acpivar.h Add x86/acpica/acpi_wakeup.c for amd64 and i386. Difference of 2012-06-09 00:37:26 +00:00