28 Jul, 2011
8 commits
-
Add support for the nowayout feature to the
WatchDog Timer Driver Core framework.
This feature prevents the watchdog timer from being
stopped.Signed-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
Add support for the Magic Close feature to the
WatchDog Timer Driver Core framework.Signed-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
This part add's the WDIOC_SETTIMEOUT and WDIOC_GETTIMEOUT ioctl
functionality to the WatchDog Timer Driver Core framework.Signed-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
This part add's the WDIOC_SETOPTIONS ioctl functionality
to the WatchDog Timer Driver Core framework.Signed-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
This part add's the WDIOC_KEEPALIVE ioctl functionality to the
WatchDog Timer Driver Core framework. Please note that the
WDIOF_KEEPALIVEPING bit has to be set in the watchdog_info
options field.Signed-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
This part add's the basic ioctl functionality to the
WatchDog Timer Driver Core framework. The supported
ioctl call's are:
WDIOC_GETSUPPORT
WDIOC_GETSTATUS
WDIOC_GETBOOTSTATUSSigned-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
The WatchDog Timer Driver Core is a framework
that contains the common code for all watchdog-driver's.
It also introduces a watchdog device structure and the
operations that go with it.This is the introduction of this framework. This part
supports the minimal watchdog userspace API (or with
other words: the functionality to use /dev/watchdog's
open, release and write functionality as defined in
the simplest watchdog API). Extra functionality will
follow in the next set of patches.Signed-off-by: Alan Cox
Signed-off-by: Wim Van Sebroeck
Acked-by: Arnd Bergmann
Acked-by: Wolfram Sang -
This patch is required to enable hpwdt to work on next generation HP servers
with iLO.Signed-off-by: Thomas Mingarelli
Signed-off-by: Wim Van Sebroeck
27 Jul, 2011
7 commits
-
remove unneeded pci.h include.
and include ioport.h to avoid build errors for the region functions.Reported-by: Randy Dunlap
Signed-off-by: Wim Van Sebroeck -
move register header to drivers
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD
Cc: Nicolas Ferre
Signed-off-by: Wim Van Sebroeck -
Watchdog timer device driver for Xilinx xps_timebase_wdt compatible ip cores.
It takes watchdog timer configuration from device tree and it needs that its
parent has defined the property "clock-frecuency".
It is compatible with watchdog timer kernel API, so user apps like watchdogd
may talk with it.Signed-off-by: Alejandro Cabrera
Signed-off-by: Wim Van Sebroeck -
While checking what watchdog drivers usually do in suspend/resume to
spot common behaviour for the watchdog framework, I found these drivers
which do nothing but add some cruft. Remove it, it is superfluous. New
approaches should probably be done with pm_ops anyway.Signed-off-by: Wolfram Sang
Signed-off-by: Wim Van Sebroeck -
There are no reads in these functions, so if MMIO writes are posted,
the writes in enable/disable may not have completed by the time these
functions return. If the functions run from different CPUs, it's
in theory possible for the writes to be interleaved, which would be
disastrous for this driver.At the very least, we need an mmiowb() before releasing the lock, but
since it seems desirable for the watchdog timer to be actually stopped
or reset when these functions return, read the lock register to force
the writes out.Signed-off-by: Nick Bowler
Signed-off-by: Wim Van Sebroeck -
At least on the Versatile Express' V2M, calling wdt_disable followed by
wdt_enable, for instance by running the following sequence:echo V > /dev/watchdog; echo V > /dev/watchdog
results in an immediate reset. The wdt_disable function writes 0 to the
load register; while the watchdog interrupts are disabled at this point,
this special value is defined to trigger an interrupt immediately. It
appears that in this instance, the reset happens when the interrupts
are subsequently enabled by wdt_enable.Putting in a short delay after writing a new load value in wdt_enable
solves the issue, but it seems cleaner to simply never write 0 to the
load register at all: according to the hardware docs, writing 0 to the
control register suffices to stop the counter, and the write of 0 to
the load register is questionable anyway since this register resets to
0xffffffff.Signed-off-by: Nick Bowler
Signed-off-by: Wim Van Sebroeck -
Adds device tree probe support for imx2_wdt driver.
Signed-off-by: Shawn Guo
Cc: Grant Likely
Cc: Wolfram Sang
Signed-off-by: Wim Van Sebroeck
22 Jul, 2011
18 commits
-
This patch adds the of_match_table to enable s3c2410-wdt driver
to be probed when watchdog device node is found in the device tree.Signed-off-by: Thomas Abraham
Acked-by: Grant Likely
Signed-off-by: Wim Van Sebroeck -
Add support for suspend and resume to the MPCore watchdog driver.
Signed-off-by: Peter Fordham
Signed-off-by: Wim Van Sebroeck -
use dev_{err,info} instead of printk(KERN_{ERR,INFO} ...)
Signed-off-by: Florian Fainelli
Signed-off-by: Wim Van Sebroeck -
The i.MX architecture provides IMX_HAVE_PLATFORM_* macros to signal
that a selected SoC supports a certain hardware. Use them instead of
depending on ARCH_* directly.Signed-off-by: Sascha Hauer
Acked-by: Uwe Kleine-König
Signed-off-by: Wim Van Sebroeck
Cc: linux-watchdog@vger.kernel.org -
The Synopsys DesignWare watchdog is found in several ARM based systems
and provides a choice of 16 timeout periods depending on the clock
input. The watchdog cannot be disabled once started.Signed-off-by: Jamie Iles
Acked-by: Viresh Kumar
Signed-off-by: Wim Van Sebroeck -
Inspired by Nat Gurumoorthy's recent patches for cleaning up the it87
drivers to use request_muxed_region for accessing the SuperIO area on
these chips, and the fact I have a GPIO driver for the pc8741x basically
ready for submission, here is a patch to cleanup the pc87413 watchdog
driver to use request_muxed_region for accessing the SuperIO area.It also pulls out the details about the SWC IO area on initial driver
load, and properly does a request_region for that area - there's no
requirement to touch the SuperIO area after doing the initial watchdog
enable and IO base retrieval.While I have hardware with a pc87413 on it it is not wired in a way that
allows the watchdog to reboot the machine, so I have not been able to
fully test these changes - I have checked that the driver correctly
initialises itself still and requests the SWC io region ok.Signed-Off-By: Jonathan McDowell
Signed-Off-By: Wim Van Sebroeck -
Clean up of the iTCO_wdt PCI device ID's.
Own macro is replaced by the PCI_VDEVICE macro.Signed-off-by: Wim Van Sebroeck
-
Changes the it87 watchdog drivers to use "request_muxed_region".
Serialize access to the hardware by using "request_muxed_region" macro defined
by Alan Cox. Call to this macro will hold off the requestor if the resource is
currently busy.The use of the above macro makes it possible to get rid of
spinlocks in it8712f_wdt.c and it87_wdt.c watchdog drivers.
This also greatly simplifies the implementation of it87_wdt.c driver."superio_enter" will return an error if call to "request_muxed_region" fails.
Rest of the code change is to ripple an error return from superio_enter to
the top level.Signed-off-by: Nat Gurumoorthy
Signed-off-by: Wim Van Sebroeck -
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:
sparc,kgdbts: fix compile regression with kgdb test suite -
Commit 63ab25ebbc (kgdbts: unify/generalize gdb breakpoint adjustment)
introduced a compile regression on sparc.kgdbts.c: In function 'check_and_rewind_pc':
kgdbts.c:307: error: implicit declaration of function 'instruction_pointer_set'Simply add the correct macro definition for instruction pointer on the
Sparc architecture.Signed-off-by: Jason Wessel
Acked-by: Mike Frysinger
Acked-by: David S. Miller -
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
CIFS: Fix wrong length in cifs_iovec_read -
…/git/tip/linux-2.6-tip
* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: Make Dell Latitude E6420 use reboot=pci
x86: Make Dell Latitude E5420 use reboot=pci -
Yet another variant of the Dell Latitude series which requires
reboot=pci.From the E5420 bug report by Daniel J Blueman:
> The E6420 is affected also (same platform, different casing and
> features), which provides an external confirmation of the issue; I can
> submit a patch for that later or include it if you prefer:
> http://linux.koolsolutions.com/2009/08/04/howto-fix-linux-hangfreeze-during-reboots-and-restarts/Reported-by: Daniel J Blueman
Signed-off-by: H. Peter Anvin
Cc: -
Rebooting on the Dell E5420 often hangs with the keyboard or ACPI
methods, but is reliable via the PCI method.[ hpa: this was deferred because we believed for a long time that the
recent reshuffling of the boot priorities in commit
660e34cebf0a11d54f2d5dd8838607452355f321 fixed this platform.
Unfortunately that turned out to be incorrect. ]Signed-off-by: Daniel J Blueman
Link: http://lkml.kernel.org/r/1305248699-2347-1-git-send-email-daniel.blueman@gmail.com
Signed-off-by: H. Peter Anvin
Cc: -
* 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/keithp/linux-2.6:
drm/i915: Fix unfenced alignment on pre-G33 hardware
drm/i915: Add quirk to disable SSC on Lenovo U160 LVDS -
It seems to hurt performance in real life. Yes, the inode will be used
later, but the conditional doesn't seem to predict all that well
(negative dentries are not uncommon) and it looks like the cost of
prefetching is simply higher than depending on the cache doing the right
thing.As usual.
Signed-off-by: Linus Torvalds
-
The compiler, at least for ix86 and m68k, validly warns that the
comparison:next
Reported-by: Jan Beulich
Signed-off-by: Jan Beulich
Signed-off-by: David Howells
Cc: Suresh Jayaraman
Cc: Geert Uytterhoeven
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds
21 Jul, 2011
7 commits
-
Signed-off-by: Pavel Shilovsky
Reviewed-by: Jeff Layton
Signed-off-by: Steve French -
…l/git/tip/linux-2.6-tip
* 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
signal: align __lock_task_sighand() irq disabling and RCU
softirq,rcu: Inform RCU of irq_exit() activity
sched: Add irq_{enter,exit}() to scheduler_ipi()
rcu: protect __rcu_read_unlock() against scheduler-using irq handlers
rcu: Streamline code produced by __rcu_read_unlock()
rcu: Fix RCU_BOOST race handling current->rcu_read_unlock_special
rcu: decrease rcu_report_exp_rnp coupling with scheduler -
…el/git/tip/linux-2.6-tip
* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
sched: Avoid creating superfluous NUMA domains on non-NUMA systems
sched: Allow for overlapping sched_domain spans
sched: Break out cpu_power from the sched_group structure -
…/git/tip/linux-2.6-tip
* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86. reboot: Make Dell Latitude E6320 use reboot=pci
x86, doc only: Correct real-mode kernel header offset for init_size
x86: Disable AMD_NUMA for 32bit for now -
…ck/linux-2.6-rcu into core/urgent
-
The __lock_task_sighand() function calls rcu_read_lock() with interrupts
and preemption enabled, but later calls rcu_read_unlock() with interrupts
disabled. It is therefore possible that this RCU read-side critical
section will be preempted and later RCU priority boosted, which means that
rcu_read_unlock() will call rt_mutex_unlock() in order to deboost itself, but
with interrupts disabled. This results in lockdep splats, so this commit
nests the RCU read-side critical section within the interrupt-disabled
region of code. This prevents the RCU read-side critical section from
being preempted, and thus prevents the attempt to deboost with interrupts
disabled.It is quite possible that a better long-term fix is to make rt_mutex_unlock()
disable irqs when acquiring the rt_mutex structure's ->wait_lock.Signed-off-by: Paul E. McKenney
Signed-off-by: Paul E. McKenney -
The rcu_read_unlock_special() function relies on in_irq() to exclude
scheduler activity from interrupt level. This fails because exit_irq()
can invoke the scheduler after clearing the preempt_count() bits that
in_irq() uses to determine that it is at interrupt level. This situation
can result in failures as follows:$task IRQ SoftIRQ
rcu_read_lock()
/* do stuff */
|= UNLOCK_BLOCKED
rcu_read_unlock()
--t->rcu_read_lock_nestingirq_enter();
/* do stuff, don't use RCU */
irq_exit();
sub_preempt_count(IRQ_EXIT_OFFSET);
invoke_softirq()ttwu();
spin_lock_irq(&pi->lock)
rcu_read_lock();
/* do stuff */
rcu_read_unlock();
rcu_read_unlock_special()
rcu_report_exp_rnp()
ttwu()
spin_lock_irq(&pi->lock) /* deadlock */rcu_read_unlock_special(t);
Ed can simply trigger this 'easy' because invoke_softirq() immediately
does a ttwu() of ksoftirqd/# instead of doing the in-place softirq stuff
first, but even without that the above happens.Cure this by also excluding softirqs from the
rcu_read_unlock_special() handler and ensuring the force_irqthreads
ksoftirqd/# wakeup is done from full softirq context.[ Alternatively, delaying the ->rcu_read_lock_nesting decrement
until after the special handling would make the thing more robust
in the face of interrupts as well. And there is a separate patch
for that. ]Cc: Thomas Gleixner
Reported-and-tested-by: Ed Tomlinson
Signed-off-by: Peter Zijlstra
Signed-off-by: Paul E. McKenney