| Summary: | FreeBSD boot loader does not recognize keyboard on MSI 6195 motherboard | ||
|---|---|---|---|
| Product: | Base System | Reporter: | sperber <sperber> |
| Component: | i386 | Assignee: | John Baldwin <jhb> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | 3.2-RELEASE | ||
| Hardware: | Any | ||
| OS: | Any | ||
|
Description
sperber
2000-03-15 13:10:01 UTC
On Wed, 15 Mar 2000 05:08:33 PST, sperber@informatik.uni-tuebingen.de wrote: > The FreeBSD boot disk (of all releases mentioned above) starts up with > > keyboard: no > > on my new Athlon 600Mhz system on an MSI 6195 motherboard. What keyboard have you got, and is the keyboard enabled in your BIOS? Ciao, Sheldon. >>>>> "Sheldon" == Sheldon Hearn <sheldonh@uunet.co.za> writes: Sheldon> On Wed, 15 Mar 2000 05:08:33 PST, sperber@informatik.uni-tuebingen.de wrote: >> The FreeBSD boot disk (of all releases mentioned above) starts up with >> >> keyboard: no >> >> on my new Athlon 600Mhz system on an MSI 6195 motherboard. Sheldon> What keyboard have you got, I've tried a Keysonic KB 230, an old Cherry MF/2 keyboard (previously hooked up and working fine on another FreeBSD system), and an Olivetti PS/2 keyboard. Same result everywhere. Sheldon> and is the keyboard enabled in your BIOS? Yes. -- Cheers =8-} Mike Friede, Völkerverständigung und überhaupt blabla Responsible Changed From-To: freebsd-bugs->rnordier Robert, can you have a look at this one? >>>>> "Sheldon" == Sheldon Hearn <sheldonh@uunet.co.za> writes: Sheldon> On Wed, 15 Mar 2000 05:08:33 PST, sperber@informatik.uni-tuebingen.de wrote: >> The FreeBSD boot disk (of all releases mentioned above) starts up with >> >> keyboard: no >> >> on my new Athlon 600Mhz system on an MSI 6195 motherboard. I've found the cause: it's the timing of the keyboard probe. When I set #define PROBE_MAXRETRY 500 #define PROBE_MAXWAIT 40000 in probe_keyboard.c, the keyboard gets detected. Furthermore, I can install with -h. It seems to me the delay code there is going to be less and less likely to work with newer motherboards. -- Cheers =8-} Mike Friede, Völkerverständigung und überhaupt blabla Responsible Changed From-To: rnordier->freebsd-bugs Return this to the pool, as I'm not actively involved with the boot code just now. Responsible Changed From-To: freebsd-bugs->jhb This may be fixed by some hacking around in boot2's keyboard probe code. Since I sort of maintain boot2, I'll take this. Hi, As it doesn't look like much has happened with this PR I thought I'd resurrect it, so I took a look at the boot code. The commentary around delay1ms() in /usr/src/sys/boot/i386/libi386/vidconsole.c has this to say: /* * This routine uses an inb to an unused port, the time to execute that * inb is approximately 1.25uS. This value is pretty constant across * all CPU's and all buses, with the exception of some PCI implentations * that do not forward this I/O address to the ISA bus as they know it * is not a valid ISA bus address, those machines execute this inb in * 60 nS :-(. * */ The unused port in question is port 0x84. (Incidentally, this is #define'd in the code; the macro is used in delay7() but not in delay1ms(). This should probably be corrected for neatness' sake.) I suspect the MSI 6195 is one of those boards which breaks the delay routine. ;) (Strangely enough, MSI chipset works just fine with it.) There are two workarounds for this; either, as suggested, whack up PROBE_MAXWAIT to about 20 times its current value, or come up with a better delay routine. The only problem I can see with increasing PROBE_MAXWAIT is that it may slow things down marginally when you boot up a machine that doesn't have a keyboard and don't put the '-P' option into 'boot.conf'. A better delay routine might be neater but is beyond my capabilities, I'm afraid ;) Keith This PR can be closed.
>>>>> "Keith" == Keith Jones <kmjones@blueyonder.co.uk> writes:
Keith> Hi,
Keith> As it doesn't look like much has happened with this PR I thought I'd
Keith> resurrect it, so I took a look at the boot code. The commentary around
Keith> delay1ms() in /usr/src/sys/boot/i386/libi386/vidconsole.c has this to
Keith> say:
Keith> /*
Keith> * This routine uses an inb to an unused port, the time to execute that
Keith> * inb is approximately 1.25uS. This value is pretty constant across
Keith> * all CPU's and all buses, with the exception of some PCI implentations
Keith> * that do not forward this I/O address to the ISA bus as they know it
Keith> * is not a valid ISA bus address, those machines execute this inb in
Keith> * 60 nS :-(.
Keith> *
Keith> */
Keith> The unused port in question is port 0x84. (Incidentally, this is
Keith> #define'd in the code; the macro is used in delay7() but not in
Keith> delay1ms(). This should probably be corrected for neatness' sake.)
Keith> I suspect the MSI 6195 is one of those boards which breaks the delay
Keith> routine. ;) (Strangely enough, MSI chipset works just fine with it.)
Keith> There are two workarounds for this; either, as suggested, whack up
Keith> PROBE_MAXWAIT to about 20 times its current value, or come up with a
Keith> better delay routine. The only problem I can see with increasing
Keith> PROBE_MAXWAIT is that it may slow things down marginally when you boot
Keith> up a machine that doesn't have a keyboard and don't put the '-P'
Keith> option into 'boot.conf'. A better delay routine might be neater but is
Keith> beyond my capabilities, I'm afraid ;)
I just checked again: for whatever reason, things work fine now with
4.6.2. Thanks for taking a look!
--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
State Changed From-To: open->closed Submitter reports that problem does not occur with 4.6.2. |