Subject: Re: Some feedback about netbsd on indigo --> part II: keyboard and
To: Pierre Letouzey <Pierre.Letouzey@pps.jussieu.fr>
From: Stephen M. Rumble <stephen.rumble@utoronto.ca>
List: port-sgimips
Date: 10/30/2006 17:11:16
Quoting Pierre Letouzey <Pierre.Letouzey@pps.jussieu.fr>:

>
> Hi all (again)
>
> This mail describes a second issue encountered when playing with netbsd on
> an Indigo (IP20). More information about the general context of what
> I'm doing in my first mail (the one about a kernel panic).
>
> This second issue isn't a big deal, but it's quite annoying
> nonetheless: as soon as the netbsd kernel (version 3.0.1) has started
> to boot, the keyboard isn't working anymore. By using another machine
> with a working keyboard (an IP22 indigo 2), I've managed to prepare a
> nfs filesystem that doesn't need any keystroke to boot and launch an
> ssh daemon. This way I can connect to my IP20 box. But that isn't
> perfect: if something gets wrong during a later boot, I'll be back in
> trouble. I'm currently looking for a console serial cable to see if it
> helps. Btw, I've also tried a 3.1-RC4 kernel without more success.

Interesting. I don't have my personal tree handy to verify that we've  
neglected to commit something somewhere, but it looks like the zskbd  
driver is never being set as the console input in  
src/sys/arch/sgimips/sgimips/console.c. I can't remember if Sekiya-san  
said it was unnecessary for some reason.

My guess is that by attaching zskbd0, we're handling the keyboard  
interrupts that were previously being handled by the ARCBIOS prom.  
Since they're not associated with the console, you're seeing no  
output. I suppose that when you panic, the kernel is polling ARCBIOS  
for input, which it is now able to succeed with since we're no longer  
servicing the serial controller.

You have a few possible solutions:

1) Add a call to 'zskbd_cnattach()' to the relevant part of console.c  
(look for 'Attach zskbd here'). I think that the unit number is 1 and  
channel number is 0. That is, 'zskbd_cnattach(1, 0)'.

2) Remove zskbd (and perhaps zsms, too) from your kernel configuration  
and let ARCBIOS handle the input. This is a little bit bad, as ARCBIOS  
will interpret ctrl+c and some other special sequences as 'drop back  
to prom'.
Naturally, it very quickly becomes a nuisance.

3) Get a serial cable and either boot without a monitor, or set  
ConsoleOut to 'serial(x)', where 'x' is the desired serial port (0 or  
1).

The first two require a kernel compilation (easy enough with the  
build.sh framework) and the second needs a mini-din8 serial cable and  
null-modem in between. A Macintosh mini-din8 cable will work.

I'd build you something to test, but I haven't any computing resources  
to use here for that purpose. It's easy enough to do yourself,  
however, or perhaps somebody else will volunteer.

Steve