Skip site navigation (1)Skip section navigation (2)
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>