Yes, the wdog_register code needs the same sort of pre-init changes as
were made by martin@ in sysmon_envsys_register().
I'm reworking the envsys changes to use RUN_ONCE() and adding the
required changes to both sysmon_{wdog,pswitch}_register() routines.
I'll commit as soon as I can run some quick tests.
On Sun, 26 Apr 2015, matthew green wrote:
i'm using the patch below to get my system to boot. otherwise the
mutex_enter() immediately after the additional return triggers an
uninit lock. this is the same problem as the other case handled,
but i got a crash while trying to hack around that and went with
the below as a workaround.
the stack trace is:
mutex_enter()
sysmon_wdog_register()
lpcibattach()
config_attach_loc()
pci_probe_device()
this is an old (2003-era) i386 laptop.
.mrg.
Index: dev/sysmon/sysmon_wdog.c
===================================================================
RCS file: /cvsroot/src/sys/dev/sysmon/sysmon_wdog.c,v
retrieving revision 1.26
diff -p -u -r1.26 sysmon_wdog.c
--- dev/sysmon/sysmon_wdog.c 23 Apr 2015 23:22:03 -0000 1.26
+++ dev/sysmon/sysmon_wdog.c 25 Apr 2015 20:40:18 -0000
@@ -312,6 +312,8 @@ sysmon_wdog_register(struct sysmon_wdog
struct sysmon_wdog *lsmw;
int error = 0;
+ return EIO;
+
mutex_enter(&sysmon_wdog_list_mtx);
LIST_FOREACH(lsmw, &sysmon_wdog_list, smw_list) {
-------------------------------------------------------------------------
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com |
| Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd.org |
-------------------------------------------------------------------------