Re: consinit() problem on -current

"David Ross" <[email protected]> Sun, 12 Jul 2009 11:22:22 -0700
Newsgroups gmane.os.netbsd.ports.atari,gmane.os.netbsd.ports.amiga
Message-ID <[email protected]>
Sorry for the delay.  Yes, this one works.  (Specifically, it successfully 
boots to the root device prompt on my TT030.  I haven't tested more than 
that.)

David Ross
[email protected]

----- Original Message ----- 
From: "Izumi Tsutsui" <[email protected]>
To: <[email protected]>; <[email protected]>
Cc: <[email protected]>; <[email protected]>; 
<[email protected]>
Sent: Tuesday, July 07, 2009 7:50 AM
Subject: 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
>