kernel-aes67/drivers
Venkatesh Pallipadi 4ec223d02f [CPUFREQ] Fix ondemand vs suspend deadlock
Rootcaused the bug to a deadlock in cpufreq and ondemand. Due to non-existent
ordering between cpu_hotplug lock and dbs_mutex. Basically a race condition
between cpu_down() and do_dbs_timer().

cpu_down() flow:
* cpu_down() call for CPU 1
* Takes hot plug lock
* Calls pre down notifier
*     cpufreq notifier handler calls cpufreq_driver_target() which takes
      cpu_hotplug lock again. OK as cpu_hotplug lock is recursive in same
      process context
* CPU 1 goes down
* Calls post down notifier
*     cpufreq notifier handler calls ondemand event stop which takes dbs_mutex

So, cpu_hotplug lock is taken before dbs_mutex in this flow.

do_dbs_timer is triggerred by a periodic timer event.
It first takes dbs_mutex and then takes cpu_hotplug lock in
cpufreq_driver_target().
Note the reverse order here compared to above. So, if this timer event happens
at right moment during cpu_down, system will deadlok.

Attached patch fixes the issue for both ondemand and conservative.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Dave Jones <davej@redhat.com>
2006-06-21 18:30:26 -04:00
..
acorn
acpi Make sure to re-enable SCI after an ACPI suspend 2006-06-19 18:05:09 -07:00
amba
atm
base [PATCH] revert "swsusp add check for suspension of X controlled devices" 2006-05-31 16:27:11 -07:00
block [NET]: Clean up skb_linearize 2006-06-17 21:30:16 -07:00
bluetooth
cdrom [PATCH] fix cdrom open 2006-06-17 10:44:26 -07:00
char Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart 2006-06-19 18:51:41 -07:00
connector [CONNECTOR]: Fix warning in cn_queue.c 2006-06-17 21:29:43 -07:00
cpufreq [CPUFREQ] Fix ondemand vs suspend deadlock 2006-06-21 18:30:26 -04:00
crypto
dio
dma [I/OAT]: Do not use for_each_cpu(). 2006-06-17 21:25:58 -07:00
edac
eisa
fc4
firmware
hwmon
i2c [PATCH] scx200_acb: fix section mismatch warning 2006-05-26 11:55:46 -07:00
ide [PATCH] sgiioc4: use mmio ops instead of port io 2006-05-31 16:27:11 -07:00
ieee1394 [PATCH] sbp2: fix check of return value of hpsb_allocate_and_register_addrspace() 2006-06-05 12:29:16 -07:00
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2006-06-19 19:01:59 -07:00
input Input: psmouse - DMI updates for lifebook protocol 2006-05-29 23:31:12 -04:00
isdn [PATCH] Overrun in isdn_tty.c 2006-05-21 12:59:18 -07:00
leds [PATCH] LED: Fix sysfs store function error handling 2006-05-15 11:20:56 -07:00
macintosh
mca
md [PATCH] md: Fix badness in sysfs_notify caused by md_new_event 2006-05-31 16:27:11 -07:00
media [NET]: Add netif_tx_lock 2006-06-17 21:30:14 -07:00
message Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2006-06-10 11:03:51 -07:00
mfd
misc
mmc [MMC] Prevent au1xmmc.c breakage on non-Au1200 Alchemy 2006-06-04 17:40:58 +01:00
mtd
net Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2006-06-19 19:07:12 -07:00
nubus
oprofile
parisc
parport
pci Merge branch 'master' into upstream 2006-06-13 20:29:04 -04:00
pcmcia [PATCH] pcmcia: missing pcmcia_get_socket() result check 2006-06-02 00:56:17 +02:00
pnp
rapidio
rtc [PATCH] m48t86: ia64 build fix 2006-06-05 12:29:17 -07:00
s390 Merge branch 'master' into upstream 2006-06-08 15:24:46 -04:00
sbus [SPARC]: Fix warning on prom_getproperty in openprom.c 2006-05-12 12:53:59 -07:00
scsi Improve SATA core suspend/resume 2006-06-19 18:01:27 -07:00
serial [PATCH] ppc32 CPM_UART: various fixes for pq2 uart users 2006-05-26 22:38:56 +10:00
sh
sn
spi [PATCH] s3c24xx: fix spi driver with CONFIG_PM 2006-05-26 11:55:46 -07:00
tc
telephony
usb Merge branch 'master' into upstream 2006-06-13 20:29:04 -04:00
video Merge branch 'i915fb' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/intelfb-2.6 2006-06-19 18:53:20 -07:00
w1
zorro
Kconfig [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00
Makefile [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00