Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Jul 1998 18:23:32 +0930
From:      Greg Lehey <grog@lemis.com>
To:        "Oles' Hnatkevych" <gnut@cki.ipri.kiev.ua>, All <freebsd-questions@FreeBSD.ORG>
Subject:   Re: UDMA
Message-ID:  <19980705182332.J18970@freebie.lemis.com>
In-Reply-To: <359E52B8.A54762F5@cki.ipri.kiev.ua>; from Oles' Hnatkevych on Sat, Jul 04, 1998 at 07:05:12PM %2B0300
References:  <359E52B8.A54762F5@cki.ipri.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday,  4 July 1998 at 19:05:12 +0300, Oles' Hnatkevych wrote:
> Hello!
>
>   I've got ASUS TX motherboard and UDMA hard drive.
>   Is there any benefit from this for FreeBSD? ;-)

Yes.  To quote a recent message:

On Monday, 29 June 1998 at 16:39:49 -0400, Christopher Wood wrote:
> I'm considering putting together a low-end pentium machine to run
> fBSD on...  I want to go SCSI, but Ultra-DMA would be much
> cheaper. Can fBSD utilize Ultra-DMA hardware? And if I want to use
> this machine for CD copying, would I still need SCSI, or would UDMA
> be sufficient?

UDMA is supported, and it brings a *great* improvement.  A non-DMA IDE
system with a low-end Pentium will max out at about 500 kB/s, at which
point the system will be using 90% interrupt time, making the system
almost useless.  The same machine with UDMA would use about 1% or 2%
interrupt time with full disk throughput (which on modern disks can be
over 6 MB/s).  Unless you have a large number of disks, you won't see
any improvement from UDMA to SCSI, and you may even see a performance
decrease.

To enable UDMA, set the disk driver flags, either in the visual config
at boot time, or (preferably) in your kernel config file.  Here's an
excerpt from "The Complete FreeBSD", second edition
(http://www.cdrom.com/titles/os/bsdbook2.htm), page 264 (with the
latest addendum).  In practice, you can almost always just set the
flags word to 0xe0ffe0ff.

A number of flags and options apply to wdc0:

o The  flags  fields are used to enable the multi-sector I/O and the 32 bit I/O
  modes.  You can use them either  in  the  controller  definition  or  in  the
  individual   disk   definitions.   If  you  want  to  use  them  during  boot
  configuration, specify them in the controller definition.

  16 flag bits are provided for each drive.  The first 16 flag  bits  refer  to
  drive 1, and the second 16 bits refer to drive 0.  In each set of flags,

  o Bit 15 (0x8000) specifies to probe for 32 bit transfers.

  o Bit 14 (0x4000) enables waking powered-down laptop drives.

  o Bit 13 (0x2000) allows probing for PCI IDE DMA controllers, such as Intel's
    PIIX south bridges.

  o Bit  12  (0x1000) enables LBA (logical block addressing mode).  If this bit
    is not set, the driver accesses  the  disk  in  CHS  (cylinder/head/sector)
    mode.

  o In CHS mode, if bits 11 to 8 are not equal to 0, they specify the number of
    heads to assume (between 1 and 15).  The driver recalculates the number  of
    cylinders to make up the total size of the disk.

  o The low 8 bits specify the maximum number of  sectors  per  transfer.   The
    special  case 0xff represents the maximum transfer size which the drive can
    handle.

  See the man page for wd(4) (on your system, but not in this  book)  for  more
  details.

  Thus,  we  can  break  down  the example value 0xff8004 (the full 32 bits are
  0x00ff8004) into 0x00ff for drive 1  (use  the  maximum  transfer  size)  and
  0x8004 for drive 0 (allow probing for 32 bit support, and use a transfer size
  of 4 sectors).

Greg
--
See complete headers for address and phone numbers
finger grog@lemis.com for PGP public key

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message



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