From owner-FreeBSD-users-jp@jp.freebsd.org  Wed Jan 27 01:39:21 1999
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) id BAA08775;
	Wed, 27 Jan 1999 01:39:21 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from tasogare.imasy.or.jp (root@tasogare.imasy.or.jp [202.227.24.5])
	by jaz.jp.freebsd.org (8.9.1+3.1W/8.7.3) with ESMTP id BAA08770
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 27 Jan 1999 01:39:19 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (ppp8.imasy.or.jp [202.227.24.18])
	by tasogare.imasy.or.jp (8.9.2+3.1W/3.7W-tasogare) with ESMTP id BAA15377;
	Wed, 27 Jan 1999 01:39:11 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Message-Id: <199901261639.BAA15377@tasogare.imasy.or.jp>
To: FreeBSD-users-jp@jp.freebsd.org, AoiMoe@isoternet.org
In-Reply-To: Your message of "Wed, 27 Jan 1999 00:15:46 +0900"
	<19990127001546K.tshiozak@muc.biglobe.ne.jp>
References: <19990127001546K.tshiozak@muc.biglobe.ne.jp>
X-Mailer: Mew version 1.93 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Wed_Jan_27_01:34:47_1999_809)--"
Content-Transfer-Encoding: 7bit
Date: Wed, 27 Jan 1999 01:37:33 +0900
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
X-Dispatcher: imput version 980905(IM100)
Lines: 147
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+981115
X-Sequence: FreeBSD-users-jp 37998
Subject: [FreeBSD-users-jp 37998] Re: =?ISO-2022-JP?B?GyRCI0kjRBsoQg==?=
 =?ISO-2022-JP?B?GyRCI0UlOyUrJXMlQCVqRyc8MSQ7JDohIxsoQg==?= 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

----Next_Part(Wed_Jan_27_01:34:47_1999_809)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$B$$$o$5$-$H?=$7$^$9!#(B

> > FreeBSD3.0R$B!!$r<!$N%^%7%s$K%$%s%9%H!<%k$7$h$&$H$7$?$H$3$m!"(B
> > $B%;%+%s%@%j$N#I#D#E$rG'<1$7$^$;$s$G$7$?!#%V!<%H;~$N%W%m!<%V$G(B
($BCfN,(B)
> $B$o$?$7$b!"%;%+%s%@%j$K$O%^%9%?$K(B CD-ROM $B$@$1$D$J$$$G$^$7$F!"(B
> $B$d$C$Q$j(B 2.2.7R $B$@$HLdBj$J$/F0$$$F$k$N$K!"(B3.0R $B$OBLL\$@$C$?5-21$,$"$j$^$9!#(B
> $B;W$o$:!V$*A0$O(B 2.1.x $B$+$$$C!W$C$F$$$&FM$C9~$_$rF~$l$F$_$?$j!#(B

2.2 $B7O$G$b$A$g$C$H2x$7$$$H$3$m$,$"$j$^$9!#(B
$B$\$/$N%N!<%H$G$O%;%+%s%@%j%^%9%?$K(B ATAPI CD-ROM $B$,7R$,$C$F$k$s$G$9$,!"(B
PAO228R $B$r;H$C$F$$$F(B wd0 $B$N(B probe $B8e$K8G$^$C$F$7$^$$$^$7$?!#(B
$B$I$&$b(B BIOS $B@_Dj$G(B APM $B$r8z$+$;$F$$$k$H%;%+%s%@%j%9%l!<%V(B
($B2?$b7R$,$C$F$$$J$$(B) $B$N(B I/O $B%]!<%HC!$$$F$bL5H?1~$K$J$C$F$k$h$&$G$7$?!#(B
APM $B$r8z$+$;$J$$$h$&$K$7$?$iLdBj$J$/(B timeout $B$7$F$/$l$^$9!#(B

$B%$%s%9%H!<%k;~$K(B probe $BCf$K8G$^$k$H$$$&OC$r$?$^$KJ9$-$^$9$,!"(B
$B$$$/$D$+$N%1!<%9$G$OF1$8860x$+$b$7$l$J$$$C$9!#$\$/$N%N!<%H$H(B
$B860x$,F1$8$J$i$P(B BIOS $B@_Dj$G(B APM $B4X78$r30$9$H$$$$$+$b$7$l$^$;$s!#(B

> $B$=$N$H$-$O!"(B/sys/i386/isa/wd.c $B$N(B wdprobe $B4X?t$K(B brute hack $B$r$+$^$7$F(B
> $B$`$j$d$jG'<1$5$;$FLdBj$J$/F0$$$F$^$7$?$,!"ET9g$K$h$j(B 3.0R $B$O(B TurboLinux $B$G(B
> $B>e=q$-$7$F$7$^$C$?$N$G!"6qBNE*$JJQ99E@$K$D$$$F$OK:5Q$NH`J}$G$9!#(B

$B>u67$,0c$$$^$9$,!"$\$/$O(B wd.c $B$H(B atapi.c $B$r$$$8$C$?$h$&$G$9!#(B
$B%=!<%9$r8+$?$i!"(B I/O $B%]!<%HC!$-B3$1$F$"$k2s?t$r1[$($?$i(B DELAY $B$rBg$-$/$7$F(B
$B$7$D$3$/D4$YB3$1$k$h$&$@$C$?$N$G!"$$$/$iB3$1$F$b>u67$,JQ$o$i$J$$$h$&$@$C$?$i(B
$B$"$-$i$a$k$h$&JQ99$7$^$7$?!#85$,$"$s$^$7D9$/8+$?$/$J$$%3!<%I$@$C$?$N$G(B 
3$BJ,=$@5$7$FIu0u$7$F$7$^$$$^$7$?(B (^^; $B$J$N$GA4A3:,K\BP:v$G$O$J$$$s$G$9$,!"(B
$B$H$j$"$($:(B diffs $B$/$C$D$1$F$*$-$^$9!#(B
$B:#$O(B dmesg $B$G$3$s$J$N$,$G$F$^$9(B :-)

wdc0 at 0x1f0-0x1f7 irq 14 flags 0xc0ffc0ff on isa
wdc0: unit 0 (wd0): <FUJITSU M2724TA>, 32-bit, multi-block-16, sleep-hack
wd0: 1556MB (3187296 sectors), 3162 cyls, 16 heads, 63 S/T, 512 B/S
wdwait: terminated by iwasaki (-_-#)
	(status 0x0 repeated 5001 times)
	(There is no devices at 0x177)
wdc1 at 0x170-0x177 irq 15 on isa
wdc1: unit 0 (atapi): <UJDCD8700/1.06>, removable, intr, iordy
acd0: drive speed 1377KB/sec, 128KB cache
acd0: supported read  types: CD-DA
acd0: Audio: play, 16 volume levels
acd0: Mechanism: ejectable tray
acd0: Medium: no/blank disc inside, unlocked
atapi_wait: terminated by iwasaki (-_-#)
	(status 0xff repeated 250001 times)
	(There is no device at 0x177)
atapi_wait: terminated by iwasaki (-_-#)
	(status 0xff repeated 250001 times)
	(There is no device at 0x177)
pcic0 at 0x3e0-0x3e1 irq 11 on isa

> $B$$$:$l$K$7$F$b!"2DG=$J$i$P%W%i%$%^%j$N%9%l!<%V$K$D$J$.$+$($k$N$,(B
> $BL5Fq$+$b$7$l$^$;$s!#(B

$B%N!<%H$@$HFq$7$$$J$!(B...


----Next_Part(Wed_Jan_27_01:34:47_1999_809)--
Content-Type: Text/Plain; charset=us-ascii
Content-Disposition: attachment; filename=wd.c.diff
Content-Transfer-Encoding: 7bit

--- wd.c-228	Wed Jan 27 00:43:46 1999
+++ wd.c	Wed Jan 27 00:48:57 1999
@@ -2442,6 +2442,9 @@
 {
 	int	wdc;
 	u_char	status;
+/* iwasaki */
+	u_char	old_status = 0xff;
+	u_int	status_cnt = 0;
 
 #define	POLLING		1000
 
@@ -2490,6 +2493,24 @@
 			}
 			if ((status & bits_wanted) == bits_wanted)
 				return (status & WDCS_ERR);
+/* iwasaki */
+			if (status == old_status)
+				status_cnt++;	/* still the same :-( */
+			else
+				status_cnt = 0;	/* status was changed */
+			
+			/* Give one more chance to respond */
+			if (timeout + 1 < TIMEOUT && status_cnt > TIMEOUT/2) {
+				printf("wdwait: terminated by iwasaki (-_-#)\n");
+				printf("\t(status 0x%x repeated %d times)\n",
+					status, status_cnt);
+				printf("\t(There is no devices at 0x%x)\n",
+					wdc + wd_status);
+
+				return -1;
+			}
+
+			old_status = status;
 		}
 		if (timeout < TIMEOUT)
 			/*

----Next_Part(Wed_Jan_27_01:34:47_1999_809)--
Content-Type: Text/Plain; charset=us-ascii
Content-Disposition: attachment; filename=atapi.c.diff
Content-Transfer-Encoding: 7bit

--- atapi.c-228	Wed Jan 27 00:44:06 1999
+++ atapi.c	Mon Jan 11 23:01:25 1999
@@ -598,10 +598,30 @@
 {
 	int cnt;
 	u_char s;
+/* iwasaki */
+	u_char old_status = 0xff;
+	u_int status_cnt = 0;
 
 	/* Wait 5 sec for BUSY deassert. */
-	for (cnt=500000; cnt>0; --cnt) {
+	#define TIMEOUT 500000
+	for (cnt=TIMEOUT; cnt>0; --cnt) {
 		s = inb (port + AR_STATUS);
+/* iwasaki */
+		if (s == old_status)
+			status_cnt++;	/* still the same :-( */
+		else
+			status_cnt = 0;	/* status was changed */
+
+		if (cnt == TIMEOUT/2 && status_cnt > TIMEOUT/4) {
+			printf("atapi_wait: terminated by iwasaki (-_-#)\n");
+			printf("\t(status 0x%x repeated %d times)\n",
+				s, status_cnt);
+			printf("\t(There is no device at 0x%x)\n",
+				port + AR_STATUS);
+			return -1;
+		}
+		old_status = s;
+
 		if (! (s & ARS_BSY))
 			break;
 		DELAY (10);

----Next_Part(Wed_Jan_27_01:34:47_1999_809)----
