[help request] collaboration for UniATA support/correction

I don’t know if anyone can/could help in any way, but i believe that a collaboration could benefit Haiku too (which lacks in SATA support, if I’m not wrong).

ReactOS switched to UniATA (an open source Universal ATA driver for Windows NT3.51/NT4/2000/XP) but now, after many tests, some problems popped up.

Here’s the Newsletter #61 chapter about it:

[quote=ReactOS Newsletter 61]
UniATA Teething

Now that SATA drives are nominally supported, people have been running it through its paces. Unfortunately, UniATA does not support the Advanced Host Controller Interface, something that seems to be very common on motherboards these days. This is causing problems for those testers but unfortunately cannot be solved until Aleksey Bragin implements it. There are also a few bugs in its handling of certain SATA controllers without AHCI. In the case of the ATI IXP700 chipset, it was missing a flag and thus trying to use the controller in the wrong mode. Christoph von Wittich has been trying to deal with that, along with another issue. Ironically, UniATA is stumbling on several SATA controllers when they are emulating IDE for legacy purposes. This is also a case of incorrect or missing information and settings in UniATA, wherein it incorrectly identifies controllers and then tries to communicate with them using the wrong mode. Christoph’s progress on both issues is however being slowed by insufficient testers who have the affected hardware.[/quote]

Again, I don’t know if anyone is interested, btw I hope that could help both projects…

Last but not least here’s the UniATA features:

  • DMA/UDMA support (up to ATA-133) on known and generic DMA on unknown controllers.
  • LBA48 (large drives greater than 128Gb) support.
  • SerialATA support (SATA, SATA-2).
  • NT3.51 (including i386 version), NT4, 2000, XP, 2003 support (may be 2005 - not tested).
  • support of contiguous set of modes UDMA0-UDMA6 (ATA-16/25/33/44/66/100/133).
  • Support of numerous IDE controllers and generic ATA/ATAPI.
  • no reinstall required when migrating to different IDE controller or motherboard.
  • internal command queueing and optimized execution order of read/write requests.
  • user-mode device management utility atactl.exe. You can change data transfer mode (PIO/DMA/UDMA) on the fly.
  • tuning Read/Write cache, transfer modes and many other things via Registry settings.
  • list of bad/unreliable blocks, to prevent driver from treating HDD but return error immediately (Nikolai Vorontsov).

Haiku has support for AHCI, the common SATA controller interface for PCI. The support is a bit limited in terms of features (in some cases because Haiku’s SCSI layer is a bit archaic), but it should certainly mean typical desktop or laptop users with AHCI would be able to use their SATA disks from Haiku. Apparently that’s not true of UniATA.