Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Aug 1996 21:15:43 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        current@FreeBSD.ORG, imb@asstdc.com.au
Subject:   Re: patch for consideration .. multi-block IDE
Message-ID:  <199608071115.VAA17880@godzilla.zeta.org.au>

index | next in thread | raw e-mail

>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


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199608071115.VAA17880>