*BSD News Article 14673


Return to BSD News archive

Newsgroups: comp.os.386bsd.questions
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!usc!howland.reston.ans.net!newsserver.jvnc.net!gmd.de!mururoa!veit
From: veit@mururoa.gmd.de (Holger Veit)
Subject: Re: Booting 386bsd from a 486dx2 machine
Message-ID: <1993Apr19.071241.24691@gmd.de>
Sender: veit@mururoa (Holger Veit)
Nntp-Posting-Host: mururoa.gmd.de
Organization: GMD, Sankt Augustin, Germany
References: <1993Apr11.011315.342@nhqvax.hq.nasa.gov> <1993Apr17.183457.351@nhqvax.hq.nasa.gov>
Date: Mon, 19 Apr 1993 07:12:41 GMT
Lines: 48

In article <1993Apr17.183457.351@nhqvax.hq.nasa.gov>, mnewell@nhqvax.hq.nasa.gov writes:
|> Goodness occurs - I got it to boot!!!
|> 
|> The problem was in the "probe" routine of "pccons".  It appears there is
|> some problem with sending commands to the KB contoller, then reading
|> them immediately back.  After sticking in a couple of hard loops
|> (ok, it's crude - but it worked!  Now I can debug it more fully...)
|> For those of you having the same problem, I munged the code as 
|> follows:
|> 
|>         /* Enable interrupts and keyboard controller */
|>         kbc_8042cmd(K_LDCMDBYTE);
|>         outb(KBOUTP, CMDBYTE);
|> 
|>         /* Start keyboard stuff RESET */
|>         kbd_cmd(KBC_RESET);
|>         while((c = inb(KBDATAP)) != KBR_ACK) {
|>                 if ((c == KBR_RESEND) ||  (c == KBR_OVERRUN)) {
|>                         if(!again)printf("KEYBOARD disconnected: RECONNECT
|> \n");
|>                         kbd_cmd(KBC_RESET);
|>                         again = 1;
|>                 }
|>                 { int ii; for (ii=0; ii < 100000; ++ii); } /* MCN */
|>         }
|> 
|>         /* pick up keyboard reset return code */
|>         while((c = inb(KBDATAP)) != KBR_RSTDONE)
|>           { int ii; for (ii=0; ii < 100000; ++ii); } /* MCN */
|>         return 1;
|> }
|> 
|> The lines with "mcn" are the relevant changes.  As I said, crude but
|> it works...  On a 486/50 the 100K loop isn't really noticable [snicker].

This is quite similar to the DELAY(1000) hack that was in the pccons code
for a long period. The problem should be corrected in the actual patchkit
0.2.2 in a much better way.

Holger

--
         Dr. Holger Veit                   | INTERNET: Holger.Veit@gmd.de
|  |   / GMD-SET German National Research  | Phone: (+49) 2241 14 2448
|__|  /  Center for Computer Science       | Fax:   (+49) 2241 14 2342
|  | /   P.O. Box 13 16                    |    Three lines Signature space
|  |/    Schloss Birlinghoven              |    available for rent. Nearly
         DW-5205 St. Augustin, Germany     |    unused, good conditions