Port-amiga archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: consinit() problem on -current



Frank Wille wrote:
> Izumi Tsutsui wrote:
>> Is there anyone who tried recent -current on atari (and amiga)?
>> I'm afraid -current kernels won't boot (hangs after bootloader).
>
> You are right! I can confirm it for Amiga!
>
> When booting a kernel, the system would just hang, before any graphics 
> chip
> initializations have taken place.

David Ross wrote:
> I see the hang as well.  First I tested the 5.0 release kernel just to make 
> sure it would work.  It does.  Then I tried this one:
> /pub/NetBSD/NetBSD-daily/HEAD/200907010002Z/atari/binary/kernel/netbsd-ATARITT.gz
> 
> It freezes even before the screen would normally go black to start the 
> scrolling boot text.

Could you try the following workaround patch or compiled ATARITT kernel?
It defers one callout(9) function to avoid mutex(9) calls in early boot.

Of course the real fix is to rewrite console initialization functions
on these ports, but I'm afraid it requires some more confirmation.

http://www.ceres.dti.ne.jp/~tsutsui/netbsd/netbsd-atari-ATARITT-20090707.gz

---
Index: kern/subr_autoconf.c
===================================================================
RCS file: /cvsroot/src/sys/kern/subr_autoconf.c,v
retrieving revision 1.178
diff -u -r1.178 subr_autoconf.c
--- kern/subr_autoconf.c        26 Jun 2009 19:30:45 -0000      1.178
+++ kern/subr_autoconf.c        7 Jul 2009 14:44:55 -0000
@@ -356,7 +356,6 @@
        cv_init(&config_misc_cv, "cfgmisc");
 
        callout_init(&config_twiddle_ch, CALLOUT_MPSAFE);
-       callout_setfunc(&config_twiddle_ch, config_twiddle_fn, NULL);
 
        /* allcfdrivers is statically initialized. */
        for (i = 0; cfdriver_list_initial[i] != NULL; i++) {
@@ -411,6 +410,14 @@
 {
        /* Initialize data structures. */
        config_init();
+       /*
+        * XXX
+        * callout_setfunc() requires mutex(9) so it can't be in config_init()
+        * on amiga and atari which use config_init() and autoconf(9) fucntions
+        * to initialize console.
+        */
+       callout_setfunc(&config_twiddle_ch, config_twiddle_fn, NULL);
+
        pmf_init();
 #if NDRVCTL > 0
        drvctl_init();

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index