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>

next in thread | raw e-mail | index | archive | help
>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



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