Date: Wed, 2 Apr 1997 02:40:02 -0800 (PST) From: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> To: freebsd-bugs Subject: Re: i386/3124: BOOT_PROBE_KEYBOARD hangs system in bootblocks Message-ID: <199704021040.CAA21970@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/3124; it has been noted by GNATS. From: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> To: nsayer@quack.kfu.com Cc: FreeBSD-gnats-submit@freebsd.org, yokota@zodiac.mech.utsunomiya-u.ac.jp Subject: Re: i386/3124: BOOT_PROBE_KEYBOARD hangs system in bootblocks Date: Wed, 02 Apr 1997 19:36:38 +0900 >>Description: > >If you set BOOT_PROBE_KEYBOARD=true in /etc/make.conf and rebuild and >install the resulting boot blocks, the system will hang on reboot. >If you plug in a keyboard while it is hanging, it will instantly >start booting as if a keyboard was plugged in. The probe is obviously >hanging when no keyboard is present. > >Let me be clear.... It is hanging _after_ the boot blocks are loaded >from disk. It is not actually hanging in the bios itself. I know this >because I was testing with a VGA monitor hooked up and watching the >disk light. Here is a patch to src/sys/i386/isa/syscons.c to guard against system hang-up after the keyboard probe routine (probe_keyboard()) in the boot block may screw up the keyboard. Unlike the previous patch I sent to you, this patch doesn't make the BOOT_PROBE_KEYBOARD option work, but rather it makes the system slightly more robust (I hope :-). Kazu --- syscons.c-dist Wed Apr 2 11:13:57 1997 +++ syscons.c Wed Apr 2 11:20:27 1997 @@ -312,8 +312,10 @@ return ((dev->id_flags & DETECT_KBD) ? 0 : IO_KBDSIZE); } - /* discard anything left after UserConfig */ + /* guard against the broken probe_keyboard() in the boot block */ empty_both_buffers(sc_kbdc, 10); + test_controller(sc_kbdc); + test_kbd_port(sc_kbdc); /* save the current keyboard controller command byte */ m = kbdc_get_device_mask(sc_kbdc) & ~KBD_KBD_CONTROL_BITS; @@ -1444,6 +1446,10 @@ cp->cn_pri = CN_INTERNAL; sc_kbdc = kbdc_open(sc_port); + /* guard against the broken probe_keyboard() in the boot block */ + empty_both_buffers(sc_kbdc, 10); + test_controller(sc_kbdc); + test_kbd_port(sc_kbdc); } void
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704021040.CAA21970>