kern/55018: [patch] Digiboard PC/Xem fails to initialize when using
digi module (BIOS boot failed (0x00 != 0x4447))
Cyrill Shevchuk
cyrill at peterlink.ru
Tue Jul 29 11:30:12 PDT 2003
>Number: 55018
>Category: kern
>Synopsis: [patch] Digiboard PC/Xem fails to initialize when using digi module (BIOS boot failed (0x00 != 0x4447))
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Jul 29 11:30:09 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Cyrill Shevchuk <cyrill at cyrills.net>
>Release: FreeBSD 5.1-RELEASE i386
>Organization:
Peterlink ISP
>Environment:
FreeBSD parazit.peterlink.ru 5.1-RELEASE FreeBSD 5.1-RELEASE #0: Thu Jun 5 02:55:42 GMT 2003 root at wv1u.btc.adaptec.com:/usr/obj/usr/src/sys/GENERIC i386
>Description:
Module digi.ko can't initialize Digiboard PC/Xem ISA multiport
serial card on old Pentium-100MHz machine.
Error message during boot or manual module loading:
digi0: BIOS boot failed (0x00 != 0x4447)
>How-To-Repeat:
1. Apply following patch to enable verbose init process:
--- sys/dev/digi/digi.c.orig Tue Jul 29 09:36:38 2003
+++ sys/dev/digi/digi.c Sun Jul 27 14:21:35 2003
@@ -108,7 +108,7 @@
static struct con_bios *con_bios_list;
devclass_t digi_devclass;
static char driver_name[] = "digi";
-unsigned digi_debug = 0;
+unsigned digi_debug = 1;
static struct speedtab digispeedtab[] = {
{ 0, 0}, /* old (sysV-like) Bx codes */
2. Place these lines in /etc/make.conf:
.if ${.CURDIR} == /usr/src/sys/modules/digi/digi
CFLAGS+= -DDEBUG
.endif
3. Recompile digi.ko module and load it:
# cd /usr/src/sys/modules/digi
# make cleandir && make obj && make depend && make
# cp digi/digi.ko /boot/kernel
# kldload digi
digi0: probing on isa bus
digi0: isa? port 0x104 mem 0xd0000
digi0: got reset after 0 iterations
digi0: board type is 0xf5
digi0: Probe returns -10
digi0: probing on isa bus
digi0: isa? port 0x104 mem 0xd0000
digi0: got reset after 0 iterations
digi0: board type is 0xf5
digi0: Probe returns -10
digi0 at port 0x104-0x107 iomem 0xd0000-0xd7fff on isa0
digi0: attaching
digi0: Checking card type
digi0: got reset after 0 iterations
digi0: board type is 0xf5
digi0: internal memory segment 0x0
digi0: got reset after 0 iterations
digi0: short memory test
digi0: 1st memory test ok
digi0: 2nd memory test ok
digi0: 3rd memory test ok
digi0: Got init reset after 0 us
digi0: BIOS uploaded
digi0: BIOS started after 0 us
digi0: BIOS boot failed (0x00 != 0x4447)
digi1: probing on isa bus
digi1: 0x534: Invalid i/o address
digi1: probing on isa bus
digi1: probing on isa bus
digi1: 0xf00: Invalid i/o address
digi1: probing on isa bus
digi1: 0x330: Invalid i/o address
digi1: probing on isa bus
digi1: io address not given
digi1: probing on isa bus
digi1: 0x061: Invalid i/o address
digi1: probing on isa bus
digi1: io address not given
>Fix:
Period given to digiboard bios to run is too small. In current version of
sys/dev/digi/digi.c it is 2 * hz ticks, actually it takes my card a little
longer to initialize (logged with default hz=100 value):
digi0: probing on isa bus
digi0: isa? port 0x104 mem 0xd0000
digi0: got reset after 0 iterations
digi0: board type is 0xf5
digi0: Probe returns -10
digi0: probing on isa bus
digi0: isa? port 0x104 mem 0xd0000
digi0: got reset after 0 iterations
digi0: board type is 0xf5
digi0: Probe returns -10
digi0 at port 0x104-0x107 iomem 0xd0000-0xd7fff on isa0
digi0: attaching
digi0: Checking card type
digi0: got reset after 0 iterations
digi0: board type is 0xf5
digi0: internal memory segment 0x0
digi0: got reset after 0 iterations
digi0: short memory test
digi0: 1st memory test ok
digi0: 2nd memory test ok
digi0: 3rd memory test ok
digi0: Got init reset after 0 us
digi0: BIOS uploaded
digi0: BIOS started after 0 us
digi0: BIOS booted after 215 iterations
digi0: Loading FEP/OS
digi0: FEP/OS loaded
digi0: FEP/OS started after 3 iterations
digi0: Digiboard PC/Xem, 64 ports found
digi1: probing on isa bus
digi1: 0x534: Invalid i/o address
digi1: probing on isa bus
digi1: probing on isa bus
digi1: 0xf00: Invalid i/o address
digi1: probing on isa bus
digi1: 0x330: Invalid i/o address
digi1: probing on isa bus
digi1: io address not given
digi1: probing on isa bus
digi1: 0x061: Invalid i/o address
digi1: probing on isa bus
digi1: io address not given
Suggested patch to sys/dev/digi/digi.c (version 1.34):
--- sys/dev/digi/digi.c.orig Tue Jul 29 09:40:24 2003
+++ sys/dev/digi/digi.c Tue Jul 29 09:40:36 2003
@@ -378,7 +378,7 @@
DLOG(DIGIDB_INIT, (sc->dev, "BIOS started after %d us\n", i));
for (i = 0; vW(ptr) != *(u_short *)"GD"; i++) {
- if (i > 2*hz) {
+ if (i > 5*hz) {
log(LOG_ERR, "digi%d: BIOS boot failed "
"(0x%02x != 0x%02x)\n",
sc->res.unit, vW(ptr), *(u_short *)"GD");
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list