From owner-freebsd-current Wed Aug 7 04:17:24 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id EAA05702 for current-outgoing; Wed, 7 Aug 1996 04:17:24 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id EAA05697 for ; Wed, 7 Aug 1996 04:17:16 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.12/8.6.9) id VAA17880; Wed, 7 Aug 1996 21:15:43 +1000 Date: Wed, 7 Aug 1996 21:15:43 +1000 From: Bruce Evans Message-Id: <199608071115.VAA17880@godzilla.zeta.org.au> To: current@FreeBSD.ORG, imb@asstdc.com.au Subject: Re: patch for consideration .. multi-block IDE Sender: owner-current@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >I noted that multi-block transfers had been broken .. the following patch >corrects the problem (a line missed in the rearrange, I suspect) .. >*** /sys/i386/isa/wd.c.orig Sun Jul 28 06:52:04 1996 >--- /sys/i386/isa/wd.c Wed Aug 7 18:59:08 1996 >*************** >*** 1665,1670 **** >--- 1665,1671 ---- > du->dk_dd.d_type = DTYPE_ESDI; > du->dk_dd.d_subtype |= DSTYPE_GEOMETRY; > #endif >+ du->dk_multi = wp->wdp_nsecperint & 0xff; > > return (0); > } This is wrong too. du->dk_multi is actually the number of sectors transferred per interrupt (not a multi-mode flag or count) and should be set to 1 unless multi-mode will actually be used, i.e., unless 1) The drive claims to support it, i.e., the above du->dk_multi > 1. 2) It is configured, i.e., (du->cfg_flags & WDOPT_MULTIMASK) > 1. 3) The configured count is <= the supported count. This restriction probably shouldn't exist (use min(configured, supported)). 4) Issuing of the command to program multi-mode succeeds. 5) The command to program multi-mode succeeds. Currently, the exit status of the command is thrown away. It is inconvenient to do all this at probe time. Bruce