summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2012-06-03 08:01:12 +0000
committeravg <avg@FreeBSD.org>2012-06-03 08:01:12 +0000
commit85a02186bcd95689dfa239312a24eb374da5a373 (patch)
tree9ef08c0095708ccf29a153abf1a19de0f3f8bc2a
parent1ecf065a6cb45ef14846d6ebdf44ce35059832a5 (diff)
downloadFreeBSD-src-85a02186bcd95689dfa239312a24eb374da5a373.zip
FreeBSD-src-85a02186bcd95689dfa239312a24eb374da5a373.tar.gz
free wdog_kern_pat calls in post-panic paths from under SW_WATCHDOG
Those calls are useful with hardware watchdog drivers too. MFC after: 3 weeks
-rw-r--r--sys/amd64/amd64/minidump_machdep.c6
-rw-r--r--sys/i386/i386/minidump_machdep.c6
-rw-r--r--sys/kern/kern_shutdown.c7
-rw-r--r--sys/kern/vfs_subr.c6
-rw-r--r--sys/x86/x86/dump_machdep.c6
5 files changed, 9 insertions, 22 deletions
diff --git a/sys/amd64/amd64/minidump_machdep.c b/sys/amd64/amd64/minidump_machdep.c
index 057d81d..9be642e 100644
--- a/sys/amd64/amd64/minidump_machdep.c
+++ b/sys/amd64/amd64/minidump_machdep.c
@@ -37,9 +37,7 @@ __FBSDID("$FreeBSD$");
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <sys/msgbuf.h>
-#ifdef SW_WATCHDOG
#include <sys/watchdog.h>
-#endif
#include <vm/vm.h>
#include <vm/vm_page.h>
#include <vm/pmap.h>
@@ -177,9 +175,9 @@ blk_write(struct dumperinfo *di, char *ptr, vm_paddr_t pa, size_t sz)
report_progress(progress, dumpsize);
counter &= (1<<24) - 1;
}
-#ifdef SW_WATCHDOG
+
wdog_kern_pat(WD_LASTVAL);
-#endif
+
if (ptr) {
error = dump_write(di, ptr, 0, dumplo, len);
if (error)
diff --git a/sys/i386/i386/minidump_machdep.c b/sys/i386/i386/minidump_machdep.c
index d57de3a..e0cd1ff 100644
--- a/sys/i386/i386/minidump_machdep.c
+++ b/sys/i386/i386/minidump_machdep.c
@@ -36,9 +36,7 @@ __FBSDID("$FreeBSD$");
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <sys/msgbuf.h>
-#ifdef SW_WATCHDOG
#include <sys/watchdog.h>
-#endif
#include <vm/vm.h>
#include <vm/pmap.h>
#include <machine/atomic.h>
@@ -143,9 +141,9 @@ blk_write(struct dumperinfo *di, char *ptr, vm_paddr_t pa, size_t sz)
printf(" %lld", PG2MB(progress >> PAGE_SHIFT));
counter &= (1<<24) - 1;
}
-#ifdef SW_WATCHDOG
+
wdog_kern_pat(WD_LASTVAL);
-#endif
+
if (ptr) {
error = dump_write(di, ptr, 0, dumplo, len);
if (error)
diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c
index 42923ff..d676136 100644
--- a/sys/kern/kern_shutdown.c
+++ b/sys/kern/kern_shutdown.c
@@ -66,9 +66,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysctl.h>
#include <sys/sysproto.h>
#include <sys/vnode.h>
-#ifdef SW_WATCHDOG
#include <sys/watchdog.h>
-#endif
#include <ddb/ddb.h>
@@ -334,9 +332,7 @@ kern_reboot(int howto)
waittime = 0;
-#ifdef SW_WATCHDOG
wdog_kern_pat(WD_LASTVAL);
-#endif
sys_sync(curthread, NULL);
/*
@@ -362,9 +358,8 @@ kern_reboot(int howto)
if (nbusy < pbusy)
iter = 0;
pbusy = nbusy;
-#ifdef SW_WATCHDOG
+
wdog_kern_pat(WD_LASTVAL);
-#endif
sys_sync(curthread, NULL);
#ifdef PREEMPTION
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 8d999c3..1d6136a 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -73,9 +73,7 @@ __FBSDID("$FreeBSD$");
#include <sys/syslog.h>
#include <sys/vmmeter.h>
#include <sys/vnode.h>
-#ifdef SW_WATCHDOG
#include <sys/watchdog.h>
-#endif
#include <machine/stdarg.h>
@@ -1869,10 +1867,10 @@ sched_sync(void)
LIST_INSERT_HEAD(next, bo, bo_synclist);
continue;
}
-#ifdef SW_WATCHDOG
+
if (first_printf == 0)
wdog_kern_pat(WD_LASTVAL);
-#endif
+
}
if (!LIST_EMPTY(gslp)) {
mtx_unlock(&sync_mtx);
diff --git a/sys/x86/x86/dump_machdep.c b/sys/x86/x86/dump_machdep.c
index 4e6546d..5c874f4 100644
--- a/sys/x86/x86/dump_machdep.c
+++ b/sys/x86/x86/dump_machdep.c
@@ -36,9 +36,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysctl.h>
#include <sys/kernel.h>
#include <sys/kerneldump.h>
-#ifdef SW_WATCHDOG
#include <sys/watchdog.h>
-#endif
#include <vm/vm.h>
#include <vm/pmap.h>
#include <machine/elf.h>
@@ -198,9 +196,9 @@ cb_dumpdata(struct md_pa *mdp, int seqnr, void *arg)
a = pa + i * PAGE_SIZE;
va = pmap_kenter_temporary(trunc_page(a), i);
}
-#ifdef SW_WATCHDOG
+
wdog_kern_pat(WD_LASTVAL);
-#endif
+
error = dump_write(di, va, 0, dumplo, sz);
if (error)
break;
OpenPOWER on IntegriCloud