cpufreq: is frequency stuck at lower limit when running on battery?

David Wolinski dwolinski at ll.mit.edu
Mon May 24 22:01:18 UTC 2004


Hello,

	I've got an Athlon 64 laptop running a custom (x86, not x86_64)
kernel based on the FC2 kernel sources.
	
	I'm successfully using the cpufreq interface to control the cpu
speed when the laptop is running on AC power.  However, when I remove AC 
power, I see the following lines in /var/log/messages:

May 24 17:52:50 whirlaway kernel: Debug: sleeping function called from 
invalid context at include/linux/rwsem.h:43
May 24 17:52:50 whirlaway kernel: in_atomic():1, irqs_disabled():0
May 24 17:52:50 whirlaway kernel: Call Trace:
May 24 17:52:50 whirlaway kernel:  [<02115ea6>] __might_sleep+0xa5/0xaf
May 24 17:52:50 whirlaway kernel:  [<02239040>] cpufreq_notify_transition+0x2e/0x141
May 24 17:52:50 whirlaway kernel:  [<42a99b45>] transition_frequency+0x8d/0xeb [powernow_k8]
May 24 17:52:50 whirlaway kernel:  [<42a99c63>] powernowk8_target+0xc0/0x105 [powernow_k8]
May 24 17:52:50 whirlaway kernel:  [<02238ac7>] __cpufreq_driver_target+0xa/0xc
May 24 17:52:50 whirlaway kernel:  [<0223966c>] cpufreq_governor_userspace+0x159/0x180
May 24 17:52:50 whirlaway kernel:  [<02238b83>] __cpufreq_governor+0x5d/0xea
May 24 17:52:50 whirlaway kernel:  [<02238f07>] __cpufreq_set_policy+0x12b/0x132
May 24 17:52:50 whirlaway kernel:  [<02238ff1>] cpufreq_update_policy+0x6b/0x8c
May 24 17:52:50 whirlaway kernel:  [<021bb16f>] acpi_processor_get_platform_limit+0x25/0x41
May 24 17:52:50 whirlaway kernel:  [<021bc120>] acpi_processor_notify+0x38/0x58
May 24 17:52:50 whirlaway kernel:  [<021a67d1>] acpi_ev_notify_dispatch+0x52/0x5b
May 24 17:52:50 whirlaway kernel:  [<021a28c1>] acpi_os_execute_deferred+0xc/0x15
May 24 17:52:50 whirlaway kernel:  [<021237be>] worker_thread+0x196/0x1f3
May 24 17:52:50 whirlaway kernel:  [<021a28b5>] acpi_os_execute_deferred+0x0/0x15
May 24 17:52:50 whirlaway kernel:  [<021151f0>] default_wake_function+0x0/0xc
May 24 17:52:50 whirlaway kernel:  [<021151f0>] default_wake_function+0x0/0xc
May 24 17:52:50 whirlaway kernel:  [<02123628>] worker_thread+0x0/0x1f3
May 24 17:52:50 whirlaway kernel:  [<02126065>] kthread+0x69/0x91
May 24 17:52:50 whirlaway kernel:  [<02125ffc>] kthread+0x0/0x91
May 24 17:52:50 whirlaway kernel:  [<021041d9>] kernel_thread_helper+0x5/0xb

and the machine remains stuck at the lowest cpu frequency setting.  Once I 
restore AC power, I can again use cpufreq to change frequencies.  As far 
as I know, there are no other (e.g. cpuspeed) frequency-management daemons 
running in the background.

Is this a feature of cpufreq or something else?  Is there any way to still 
manually control the cpu speed when running on battery?

Thanks for any help.  -Dave

----------

p.s.  Some possibly relevant lines from my custom kernel .config are:

#
# Automatically generated make config: don't edit
#
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y
                                                                                                                                      
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_STANDALONE=y
CONFIG_BROKEN_ON_SMP=y
                                                                                                                                      
#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_SYSCTL=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_HOTPLUG=y
# CONFIG_IKCONFIG is not set
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
                                                                                                                                      
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
CONFIG_MK8=y
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_4G=y
CONFIG_X86_SWITCH_PAGETABLES=y
CONFIG_X86_4G_VM_LAYOUT=y
CONFIG_X86_UACCESS_INDIRECT=y
CONFIG_X86_HIGH_ENTRY=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
# CONFIG_SMP is not set
CONFIG_PREEMPT=y
# CONFIG_X86_UP_APIC is not set
CONFIG_X86_TSC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
CONFIG_MICROCODE=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

#
# Firmware Drivers
#
CONFIG_EDD=m
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_HAVE_DEC_LOCK=y
CONFIG_REGPARM=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_SOFTWARE_SUSPEND is not set
# CONFIG_PM_DISK is not set

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_ASUS=m
CONFIG_ACPI_TOSHIBA=m
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_BUS=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y

#
# APM (Advanced Power Management) BIOS Support
#
CONFIG_APM=y
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
# CONFIG_APM_DO_ENABLE is not set
CONFIG_APM_CPU_IDLE=y
# CONFIG_APM_DISPLAY_BLANK is not set
CONFIG_APM_RTC_IS_GMT=y
# CONFIG_APM_ALLOW_INTS is not set
# CONFIG_APM_REAL_MODE_POWER_OFF is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
# CONFIG_CPU_FREQ_PROC_INTF is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
# CONFIG_CPU_FREQ_24_API is not set
CONFIG_CPU_FREQ_TABLE=y

#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=m
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
CONFIG_X86_POWERNOW_K8=m
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_SMI is not set
# CONFIG_X86_P4_CLOCKMOD is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set





More information about the users mailing list