alex.shi
ff69f2bba6
acpi: fix of pmtimer overflow that make Cx states time incorrect
...
We found Cx states time abnormal in our some of machines which have 16
LCPUs, the C0 take too many time while system is really idle when kernel
enabled tickless and highres. powertop output is below:
PowerTOP version 1.9 (C) 2007 Intel Corporation
Cn Avg residency P-states (frequencies)
C0 (cpu running) (40.5%) 2.53 Ghz 0.0%
C1 0.0ms ( 0.0%) 2.53 Ghz 0.0%
C2 128.8ms (59.5%) 2.40 Ghz 0.0%
1.60 Ghz 100.0%
Wakeups-from-idle per second : 4.7 interval: 20.0s
no ACPI power usage estimate available
Top causes for wakeups:
41.4% ( 24.9) <interrupt> : extra timer interrupt
20.2% ( 12.2) <kernel core> : usb_hcd_poll_rh_status
(rh_timer_func)
After tacking detailed for this issue, Yakui and I find it is due to 24
bit PM timer overflows when some of cpu sleep more than 4 seconds. With
tickless kernel, the CPU want to sleep as much as possible when system
idle. But the Cx sleep time are recorded by pmtimer which length is
determined by BIOS. The current Cx time was gotten in the following
function from driver/acpi/processor_idle.c:
static inline u32 ticks_elapsed(u32 t1, u32 t2)
{
if (t2 >= t1)
return (t2 - t1);
else if (!(acpi_gbl_FADT.flags & ACPI_FADT_32BIT_TIMER))
return (((0x00FFFFFF - t1) + t2) & 0x00FFFFFF);
else
return ((0xFFFFFFFF - t1) + t2);
}
If pmtimer is 24 bits and it take 5 seconds from t1 to t2, in above
function, just about 1 seconds ticks was recorded. So the Cx time will be
reduced about 4 seconds. and this is why we see above powertop output.
To resolve this problem, Yakui and I use ktime_get() to record the Cx
states time instead of PM timer as the following patch. the patch was
tested with i386/x86_64 modes on several platforms.
Acked-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Tested-by: Alex Shi <alex.shi@intel.com>
Signed-off-by: Alex Shi <alex.shi@intel.com>
Signed-off-by: Yakui.zhao <yakui.zhao@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Len Brown <len.brown@intel.com>
2009-03-17 01:13:46 -04:00
..
accessibility
acpi
acpi: fix of pmtimer overflow that make Cx states time incorrect
2009-03-17 01:13:46 -04:00
amba
[ARM] Fix realview build
2009-01-08 16:29:41 +00:00
ata
Add support for VT6415 PCIE PATA IDE Host Controller
2009-02-17 16:56:31 -08:00
atm
ATM: misplaced parentheses?
2009-02-18 17:41:38 -08:00
auxdisplay
base
PM: Split up sysdev_[suspend|resume] from device_power_[down|up], fix
2009-02-22 22:09:33 +01:00
block
m68k: atari - Rename "mfp" to "st_mfp"
2009-02-22 09:23:02 -08:00
bluetooth
cdrom
char
m68k: atari - Rename "mfp" to "st_mfp"
2009-02-22 09:23:02 -08:00
clocksource
Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-02 11:44:09 -08:00
connector
cpufreq
[CPUFREQ] Make ignore_nice_load setting of ondemand work as expected.
2009-02-05 12:25:26 -05:00
cpuidle
crypto
dca
dca: redesign locks to fix deadlocks
2009-02-02 23:26:57 -08:00
dio
m68k: dio - Kill resource_size_t format warnings
2009-01-12 20:56:42 +01:00
dma
atmel-mci: fix initialization of dma slave data
2009-02-18 15:37:55 -08:00
edac
powerpc: More printing warning fixes for the l64 to ll64 conversion
2009-01-28 17:15:52 +11:00
eisa
firewire
firewire: core: Remove card from list of cards when enable fails
2009-02-01 11:17:24 +01:00
firmware
Bernhard has moved
2009-02-18 15:37:56 -08:00
gpio
gpiolib: fix request related issue
2009-01-29 18:04:43 -08:00
gpu
drm/i915: convert DRM_ERROR to DRM_DEBUG in phys object pwrite path
2009-02-25 14:52:30 +10:00
hid
HID: move tmff and zpff devices from ignore_list to blacklist
2009-02-17 13:25:01 +01:00
hwmon
lis3lv02d: add axes knowledge of HP Pavilion dv5 models
2009-02-18 15:37:54 -08:00
i2c
Add i2c_board_info for RiscPC PCF8583
2009-02-24 19:19:50 +01:00
ide
Fix my email address in qd65xx.[ch]/pata_qdi.c
2009-02-03 16:53:56 -08:00
idle
i7300_idle: struct device - replace bus_id with dev_name(), dev_set_name()
2009-01-06 10:44:39 -08:00
ieee1394
ieee1394: remove superfluous assertions
2009-02-24 14:51:28 +01:00
infiniband
Merge branches 'ehca', 'ipoib' and 'mlx4' into for-linus
2009-01-16 15:05:54 -08:00
input
input: PCF50633 input driver
2009-01-11 01:34:25 +01:00
isdn
ISDN: fix sc/shmem printk format warning
2009-02-20 00:54:44 -08:00
leds
lis3lv02d: merge with leds hp disk
2009-01-15 16:39:40 -08:00
lguest
lguest: Fix a memory leak with the lg object during launcher close
2009-01-30 11:34:11 +10:30
macintosh
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-01-07 11:31:52 -08:00
mca
md
md: avoid races when stopping resync.
2009-02-25 13:18:47 +11:00
media
firedtv: dvb_frontend_info for FireDTV S2, fix "frequency limits undefined" error
2009-02-24 17:58:23 +01:00
memstick
memstick: annotate endianness of attribute structs
2009-01-09 16:54:41 -08:00
message
[SCSI] mpt fusion: Add Firmware debug support
2009-01-13 10:36:02 -06:00
mfd
mfd: Fix sm501_register_gpio section mismatch
2009-02-17 09:48:05 +01:00
misc
sgi-xp: fix writing past the end of kzalloc()'d space
2009-02-05 12:56:49 -08:00
mmc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
2009-02-18 17:55:15 -08:00
mtd
[ARM] 5400/1: Add support for inverted rdy_busy pin for Atmel nand device controller
2009-02-16 21:40:39 +00:00
net
Fix iwlan DMA mapping direction
2009-02-25 09:30:56 -08:00
nubus
of
drivers/of: Add the of_find_i2c_device_by_node function.
2009-01-09 15:49:06 -07:00
oprofile
oprofile: fix uninitialized use of struct op_entry
2009-01-17 17:26:39 +01:00
parisc
Documentation: move DMA-mapping.txt to Doc/PCI/
2009-01-29 18:19:29 -08:00
parport
m68k: atari - Rename "mfp" to "st_mfp"
2009-02-22 09:23:02 -08:00
pci
Merge git://git.infradead.org/iommu-2.6
2009-02-25 09:31:21 -08:00
pcmcia
powerpc: Change u64/s64 to a long long integer type
2009-01-13 14:47:59 +11:00
platform
fujitsu-laptop: Use RFKILL support bitmask from firmware
2009-02-21 21:59:55 -05:00
pnp
Merge branch 'linus' into release
2009-01-09 03:39:43 -05:00
power
pcf50633_charger: Fix typo
2009-02-02 19:53:02 +03:00
ps3
powerpc/ps3: Printing fixups for l64 to ll64 conversion drivers/ps3
2009-01-16 16:15:14 +11:00
rapidio
rapidio: remove excess kernel-doc notation
2009-01-06 15:59:28 -08:00
regulator
leds: Fix bounds checking of wm8350->pmic.led
2009-01-30 21:50:49 +00:00
rtc
rtc: t reaches -1, tested 0
2009-02-11 14:25:36 -08:00
s390
[S390] fix "mem=" handling in case of standby memory
2009-02-19 15:19:19 +01:00
sbus
sparc64: Fix unsigned long long warnings in drivers.
2009-01-06 13:20:38 -08:00
scsi
[SCSI] qla2xxx: Update version number to 8.03.00-k3.
2009-02-10 11:15:20 -05:00
serial
8250: fix boot hang with serial console when using with Serial Over Lan port
2009-02-20 17:57:50 -08:00
sh
sn
spi
spi-gpio: sanitize MISO bitvalue
2009-02-18 15:37:56 -08:00
ssb
staging
Staging: panel: fix lcd panel driver build failure
2009-02-09 11:26:18 -08:00
tc
telephony
thermal
thermal: struct device - replace bus_id with dev_name(), dev_set_name()
2009-01-06 10:44:37 -08:00
uio
UIO: Pass information about ioports to userspace (V2)
2009-01-06 10:44:44 -08:00
usb
Merge master.kernel.org:/home/rmk/linux-2.6-arm
2009-02-19 09:52:12 -08:00
uwb
uwb: lock rc->rsvs_lock with spin_lock_bh()
2009-01-23 12:57:20 +00:00
video
m68k: atari - Rename "mfp" to "st_mfp"
2009-02-22 09:23:02 -08:00
virtio
virtio-pci: do not oops on config change if driver not loaded
2009-02-02 19:17:56 -08:00
w1
w1: w1 temp calculation overflow fix
2009-02-11 14:25:37 -08:00
watchdog
Merge master.kernel.org:/home/rmk/linux-2.6-arm
2009-02-19 09:52:12 -08:00
xen
PM: Split up sysdev_[suspend|resume] from device_power_[down|up]
2009-02-22 10:33:44 -08:00
zorro
m68k: zorro - Use %pR to print resources
2009-01-12 20:56:43 +01:00
Kconfig
Makefile
Merge branch 'drivers-platform' into release
2009-01-09 04:56:56 -05:00