kernel_optimize_test/drivers/watchdog
Doug Anderson 7fb466a7a7 watchdog: dw_wdt: No need for a spinlock
Right now the dw_wdt uses a spinlock to protect dw_wdt_open().  The
problem is that while holding the spinlock we call:
-> dw_wdt_set_top()
   -> dw_wdt_top_in_seconds()
      -> clk_get_rate()
         -> clk_prepare_lock()
            -> mutex_lock()

Locking a mutex while holding a spinlock is not allowed and leads to
warnings like "BUG: spinlock wrong CPU on CPU#1", among other
problems.

There's no reason to use a spinlock.  Only dw_wdt_open() was protected
and the test_and_set_bit() at the start of that function protects us
anyway.

Signed-off-by: Doug Anderson <dianders@chromium.org>
Tested-by: Jisheng Zhang <jszhang@marvell.com>
Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
2015-06-22 15:54:31 +02:00
..
acquirewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
advantechwdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
alim1535_wdt.c watchdog: remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-28 19:07:07 +01:00
alim7101_wdt.c watchdog: alim7101: register restart handler with kernel restart handler 2014-09-26 00:00:32 -07:00
ar7_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
at32ap700x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
at91rm9200_wdt.c watchdog: at91rm9200: implement restart handler 2015-03-16 17:03:02 +01:00
at91sam9_wdt.c watchdog: at91sam9: use endian agnostic IO 2015-06-22 15:53:57 +02:00
at91sam9_wdt.h
ath79_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm_kona_wdt.c watchdog: bcm281xx: Remove use of seq_printf return value 2015-04-22 15:27:39 +02:00
bcm47xx_wdt.c watchdog: bcm47xx_wdt.c: add restart handler support 2015-02-17 21:33:27 +01:00
bcm63xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm2835_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bfin_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
booke_wdt.c powerpc: booke_wdt: Fix build error as a module 2014-10-20 20:44:22 +02:00
cadence_wdt.c watchdog: drop owner assignment from platform_drivers 2015-01-21 14:52:34 +01:00
coh901327_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
cpu5wdt.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
cpwd.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
da9052_wdt.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
da9055_wdt.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
da9063_wdt.c watchdog: da9063: Add restart handler support 2015-02-17 21:33:06 +01:00
davinci_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
diag288_wdt.c s390/watchdog: support for KVM hypervisors and delete pr_info messages 2015-03-25 11:49:42 +01:00
digicolor_wdt.c watchdog: digicolor: driver for Conexant Digicolor CX92755 SoC 2015-06-22 15:53:59 +02:00
dw_wdt.c watchdog: dw_wdt: No need for a spinlock 2015-06-22 15:54:31 +02:00
ep93xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02: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: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
geodewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
gpio_wdt.c watchdog: gpio_wdt: Add "always_running" feature to GPIO watchdog 2015-02-17 21:33:22 +01:00
hpwdt.c watchdog: hpwdt: Fix initialization message in hpwdt.c 2015-02-17 21:32:10 +01:00
i6300esb.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
ib700wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ibmasr.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
ie6xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
imgpdc_wdt.c watchdog: imgpdc: Add some documentation about the timeout 2015-06-22 15:54:15 +02:00
imx2_wdt.c watchdog: imx2_wdt: also set wdog->timeout to new_timeout 2015-06-22 15:54:25 +02:00
indydog.c watchdog: indydog: Simplify indydog_{start,stop} 2014-03-31 13:26:31 +02:00
intel_scu_watchdog.c watchdog: intel_scu_watchdog: Remove unused variable 2014-03-31 13:26:56 +02:00
intel_scu_watchdog.h
intel-mid_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
iop_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
it87_wdt.c watchdog: it87_wdt: add IT8783 ID 2015-02-17 21:32:08 +01:00
it8712f_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
iTCO_vendor_support.c
iTCO_vendor.h
iTCO_wdt.c PM / watchdog: iTCO: stop watchdog during system suspend 2015-04-03 15:25:04 +02:00
ixp4xx_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
jz4740_wdt.c watchdog: jz4740: Add DT support 2015-02-17 21:34:09 +01:00
Kconfig watchdog: Allow compile test of GPIO consumers if !GPIOLIB 2015-06-22 15:54:24 +02:00
kempld_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ks8695_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
lantiq_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02: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: digicolor: driver for Conexant Digicolor CX92755 SoC 2015-06-22 15:53:59 +02:00
max63xx_wdt.c watchdog: max63xx_wdt: Constify platform_device_id 2015-06-22 15:54:22 +02:00
mena21_wdt.c watchdog: New watchdog driver for MEN A21 watchdogs 2013-07-11 22:19:05 +02:00
menf21bmc_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
meson_wdt.c watchdog: drop owner assignment from platform_drivers 2015-01-21 14:52:34 +01:00
mixcomwd.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
moxart_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
mpc8xxx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
mtk_wdt.c watchdog: mtk_wdt: signedness bug in mtk_wdt_start() 2015-03-27 08:47:36 +01:00
mtx-1_wdt.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
mv64x60_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nuc900_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nv_tco.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nv_tco.h
octeon-wdt-main.c watchdog: octeon: use fixed length string for register names 2015-04-22 15:28:40 +02:00
octeon-wdt-nmi.S
of_xilinx_wdt.c watchdog: xilinx: Remove .owner field for driver 2014-10-20 20:43:42 +02:00
omap_wdt.c watchdog: omap: assert the counter being stopped before reprogramming 2015-06-22 15:54:07 +02:00
omap_wdt.h
orion_wdt.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
pc87413_wdt.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
pcwd_pci.c watchdog: remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-28 19:07:07 +01:00
pcwd_usb.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
pcwd.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01: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: pnx4008_wdt: fix broken email address 2015-04-22 15:30:41 +02:00
qcom-wdt.c watchdog: qcom: use timer devicetree binding 2015-04-22 15:27:47 +02:00
rc32434_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
rdc321x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
retu_wdt.c watchdog: Fix omap watchdogs to enable the magic close bit 2015-02-17 21:32:36 +01:00
riowd.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
rn5t618_wdt.c watchdog: add driver for Ricoh RN5T618 watchdog 2014-10-20 20:55:02 +02:00
rt2880_wdt.c watchdog: rt2880_wdt: minor clean up 2015-02-17 21:32:21 +01:00
s3c2410_wdt.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08: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
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
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
sc520_wdt.c watchdog: sc520_wdt: Remove unused variable 2014-03-31 13:27:34 +02:00
sc1200wdt.c sc1200_wdt: Fix oops 2013-12-10 08:48:15 +01:00
sch311x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
scx200_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
shwdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
sirfsoc_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
smsc37b787_wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
softdog.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
sp805_wdt.c watchdog: sp805: Set watchdog_device->timeout from ->set_timeout() 2014-06-10 21:47:47 +02:00
sp5100_tco.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02: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
st_lpc_wdt.c watchdog: st_wdt: Update IP layout information to include Clocksource 2015-06-22 15:53:52 +02:00
stmp3xxx_rtc_wdt.c watchdog: stmp3xxx_rtc_wdt: fix broken email address 2015-04-22 15:30:45 +02:00
sunxi_wdt.c Merge branch 'platform/remove_owner' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into driver-core-next 2014-11-03 19:53:56 -08:00
tegra_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ts72xx_wdt.c Merge branch 'platform/remove_owner' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into driver-core-next 2014-11-03 19:53:56 -08:00
twl4030_wdt.c watchdog: Fix omap watchdogs to enable the magic close bit 2015-02-17 21:32:36 +01:00
txx9wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ux500_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
via_wdt.c watchdog: via_wdt: replace del_timer by del_timer_sync 2014-06-10 21:38:25 +02:00
w83627hf_wdt.c watchdog: w83627hf_wdt: Add support for NCT6791 and NCT6792 2015-02-17 21:33:37 +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_pci.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
wdt.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
wdt285.c watchdog: wdt285: Fix variable type 2014-03-31 13:28:20 +02:00
wdt977.c watchdog: Get rid of MODULE_ALIAS_MISCDEV statements 2013-11-17 19:38:13 +01:00
wm831x_wdt.c watchdog: Remove unnecessary OOM messages 2014-03-31 13:23:19 +02:00
wm8350_wdt.c watchdog: remove use of __devexit 2012-11-28 12:00:24 -08:00
xen_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00