Srivatsa S. Bhat
99c3bf361a
octeon, watchdog: Fix CPU hotplug callback registration
...
Subsystems that want to register CPU hotplug callbacks, as well as perform
initialization for the CPUs that are already online, often do it as shown
below:
get_online_cpus();
for_each_online_cpu(cpu)
init_cpu(cpu);
register_cpu_notifier(&foobar_cpu_notifier);
put_online_cpus();
This is wrong, since it is prone to ABBA deadlocks involving the
cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
with CPU hotplug operations).
Instead, the correct and race-free way of performing the callback
registration is:
cpu_notifier_register_begin();
for_each_online_cpu(cpu)
init_cpu(cpu);
/* Note the use of the double underscored version of the API */
__register_cpu_notifier(&foobar_cpu_notifier);
cpu_notifier_register_done();
Fix the watchdog code in octeon by using this latter form of callback
registration.
Cc: Wim Van Sebroeck <[email protected] >
Cc: Ingo Molnar <[email protected] >
Signed-off-by: Srivatsa S. Bhat <[email protected] >
Signed-off-by: Rafael J. Wysocki <[email protected] >
2014-03-20 13:43:46 +01:00
..
acquirewdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
advantechwdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
alim1535_wdt.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
alim7101_wdt.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
ar7_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
at32ap700x_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
at91rm9200_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
at91sam9_wdt.c
watchdog: at91sam9_wdt: increase security margin on watchdog counter reset
2014-01-28 21:34:55 +01:00
at91sam9_wdt.h
ath79_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
bcm47xx_wdt.c
watchdog: bcm47xx_wdt.c: add hard timer
2013-03-01 12:47:31 +01:00
bcm63xx_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
bcm2835_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
bcm_kona_wdt.c
watchdog: bcm281xx: Debugfs support
2014-01-28 21:17:53 +01:00
bfin_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
booke_wdt.c
powerpc/watchdog: Don't enable interrupt on PPC64 BookE
2013-06-25 18:14:45 -05:00
coh901327_wdt.c
watchdog: coh901327: devicetree support
2013-05-31 11:25:52 +02:00
cpu5wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
cpwd.c
watchdog: cpwd: use platform_{get,set}_drvdata()
2013-07-11 21:07:24 +02:00
da9052_wdt.c
watchdog: da9052: use platform_{get,set}_drvdata()
2013-07-11 21:08:01 +02:00
da9055_wdt.c
watchdog: da9055: use platform_{get,set}_drvdata()
2013-07-11 21:08:27 +02:00
davinci_wdt.c
watchdog: davinci: reuse driver for keystone arch
2014-01-28 21:20:05 +01:00
dw_wdt.c
watchdog: dw_wdt: remove build dependencies
2014-01-28 21:25:46 +01:00
ep93xx_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
eurotechwdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
f71808e_wdt.c
gef_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
geodewdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
gpio_wdt.c
watchdog: GPIO-controlled watchdog
2014-01-28 21:21:02 +01:00
hpwdt.c
watchdog: hpwdt patch to display informative string
2014-01-28 21:26:10 +01:00
i6300esb.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
ib700wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
ibmasr.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
ie6xx_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
imx2_wdt.c
watchdog: imx2_wdt: disable watchdog timer during low power mode
2014-01-28 21:25:20 +01:00
indydog.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
intel_scu_watchdog.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
intel_scu_watchdog.h
iop_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
it87_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
it8712f_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
iTCO_vendor.h
iTCO_vendor_support.c
iTCO_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
ixp4xx_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
jz4740_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
Kconfig
watchdog: dw_wdt: Add dependency on HAS_IOMEM
2014-02-08 09:47:11 +01:00
kempld_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
ks8695_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
lantiq_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
m54xx_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
machzwd.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
Makefile
watchdog: GPIO-controlled watchdog
2014-01-28 21:21:02 +01:00
max63xx_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
mena21_wdt.c
watchdog: New watchdog driver for MEN A21 watchdogs
2013-07-11 22:19:05 +02:00
mixcomwd.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
moxart_wdt.c
watchdog: mach-moxart: add restart handler
2014-01-28 21:27:32 +01:00
mpc8xxx_wdt.c
watchdog: mpc8xxx_wdt convert to watchdog core
2014-01-28 21:27:08 +01:00
mtx-1_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
mv64x60_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
nuc900_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
nv_tco.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
nv_tco.h
octeon-wdt-main.c
octeon, watchdog: Fix CPU hotplug callback registration
2014-03-20 13:43:46 +01:00
octeon-wdt-nmi.S
of_xilinx_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
omap_wdt.c
watchdog: omap_wdt: raw read and write endian fix
2013-11-17 19:42:38 +01:00
omap_wdt.h
orion_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
pc87413_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
pcwd.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
pcwd_pci.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
pcwd_usb.c
Watchdog: pcwd_usb: remove CONFIG_USB_DEBUG usage
2014-01-07 16:15:39 -08:00
pika_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
pnx833x_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
pnx4008_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
rc32434_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
rdc321x_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
retu_wdt.c
watchdog: introduce retu_wdt driver
2013-03-01 12:31:14 +01:00
riowd.c
watchdog: riowd: use platform_{get,set}_drvdata()
2013-07-11 20:57:25 +02:00
rt2880_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
s3c2410_wdt.c
watchdog: s3c2410_wdt: Report when the watchdog reset the system
2014-01-28 21:24:33 +01:00
sa1100_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sb_wdog.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sbc60xxwdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sbc7240_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sbc8360.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sbc_epx_c3.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sbc_fitpc2_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sc520_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
sc1200wdt.c
sc1200_wdt: Fix oops
2013-12-10 08:48:15 +01:00
sch311x_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
scx200_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
shwdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
sirfsoc_wdt.c
watchdog: sirf: Remove redundant of_match_ptr helper
2014-01-28 21:26:31 +01:00
smsc37b787_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
softdog.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
sp805_wdt.c
watchdog: sp805_wdt: Remove unnecessary amba_set_drvdata()
2013-11-17 19:37:31 +01:00
sp5100_tco.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
sp5100_tco.h
watchdog: sp5100_tco: Set the AcpiMmioSel bitmask value to 1 instead of 2
2013-03-22 23:21:55 +01:00
stmp3xxx_rtc_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
sunxi_wdt.c
watchdog: Remove redundant of_match_ptr
2013-11-17 19:37:11 +01:00
ts72xx_wdt.c
watchdog: ts72xx_wdt: Propagate return value from timeout_to_regval
2013-11-17 19:38:02 +01:00
twl4030_wdt.c
watchdog: twl4030: Remove redundant platform_set_drvdata()
2013-07-11 21:10:13 +02:00
txx9wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
ux500_wdt.c
watchdog: Drop unnecessary include of miscdevice.h
2013-12-10 08:48:09 +01:00
via_wdt.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
w83627hf_wdt.c
watchdog: w83627hf_wdt: Reset watchdog trigger during initialization
2014-01-28 21:35:40 +01:00
w83697hf_wdt.c
watchdog: w83697hf_wdt: return ENODEV if no device was found
2014-02-21 20:36:46 +01:00
w83697ug_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
w83877f_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
w83977f_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
wafer5823wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
watchdog_core.c
watchdog: core: Make dt "timeout-sec" property work on drivers w/out min/max
2014-01-28 19:07:56 +01:00
watchdog_core.h
watchdog_dev.c
watchdog: core: don't try to stop device if not running
2013-07-11 21:14:39 +02:00
wd501p.h
wdrtas.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
wdt285.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
wdt977.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00
wdt_pci.c
watchdog: remove DEFINE_PCI_DEVICE_TABLE macro
2014-01-28 19:07:07 +01:00
wm831x_wdt.c
watchdog: use dev_get_platdata()
2013-11-17 19:34:20 +01:00
wm8350_wdt.c
xen_wdt.c
watchdog: Get rid of MODULE_ALIAS_MISCDEV statements
2013-11-17 19:38:13 +01:00