PREEMPT problems in cpufreq/powernow-k8

From: Pavel Machek
Date: Tue Jun 01 2004 - 08:19:21 EST


Hi!

I enabled CONFIG_PREEMPT to test swsusp, and it uncovered some
problems with powernow-k8:


md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 204k freed
Debug: sleeping function called from invalid context at include/linux/rwsem.h:43
in_atomic():1, irqs_disabled():0
Call Trace:
[<c011b91a>] __might_sleep+0xaa/0xb8
[<c0333dd2>] cpufreq_notify_transition+0x32/0x168
[<c010fd5d>] transition_frequency+0xa1/0x104
[<c010fe9b>] powernowk8_target+0xdb/0x130
[<c03337ab>] __cpufreq_driver_target+0x1b/0x20
[<c03341ea>] cpufreq_governor_performance+0x1e/0x24
[<c033388a>] __cpufreq_governor+0x6e/0x10c
[<c0333c5d>] __cpufreq_set_policy+0x139/0x144
[<c0333cb5>] cpufreq_set_policy+0x4d/0x94
[<c0334896>] cpufreq_proc_write+0x9e/0xb8
[<c0142440>] handle_mm_fault+0xc8/0x134
[<c0119217>] do_page_fault+0x13f/0x4fb
[<c01190d8>] do_page_fault+0x0/0x4fb
[<c0175c13>] proc_file_write+0x27/0x34
[<c014d67c>] vfs_write+0xa0/0xd0
[<c014d729>] sys_write+0x31/0x4c
[<c0104ce7>] syscall_call+0x7/0xb

Adding 1051304k swap on /dev/hda1. Priority:-1 extents:1

powernowk8_target does preempt_disable(), and that calls
cpufreq_notify_transition(). That does down(). Ouch.

Hmm, but on SMP systems frequency really should be changed with
preempt_disable. How to deal with that?
Pavel

[Plus I get some more warnings during swsusp, all seem to be
powernow-k8 related...]
--
934a471f20d6580d5aad759bf0d97ddc

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/