# Ultra-DMA mini HOWTO

## Autor: Brion Vibber, brion@pobox.com
v3.0, 9 Listopada 1999
Wersja polska: Bartosz Maruszewski B.Maruszewski@jtz.org.pl.
v1.0, 2 Marca 2001

Celem tego dokumentu jest wyjaśnienie sposobu użytkowania dysków UltraDMA/UltraATA/Ultra33/Ultra66 w Linuksie. Najnowsza wersja oryginału znajduje się pod adresem http://pobox.com/~brion/linux/Ultra-DMA.html. Dokument ten napisany został w standardzie ISO-8859-2.

## 1. Wprowadzenie.

Celem tego dokumentu jest wyjaśnienie sposobu użytkowania dysków UltraDMA/UltraATA/Ultra33/Ultra66 w Linuksie. W wielu przypadkach nie ma trudności w użytkowaniu tych urządzeń, a drobne ,,poprawki'' mogą wpłynąć pozytywnie na lepsze działanie. Z kolei w innych przypadkach wymagane są dodatkowe działania tylko po to, żeby dostać się do dysku.

## 1.1 Zastrzeżenie

Informacje zawarte w tym dokumencie są, wg. mojej wiedzy, poprawne. Jednak mogą pojawić się literówki, jakieś tajemnicze błędy podczas transmisji jak również dziwne niekompatybilności w systemie, które będą powodowały niepoprawne działanie opisanych tutaj sposbów. Tak więc... przed rozpoczęciem grzebania w konfiguracji dysku NALEŻY ZROBIĆ KOPIĘ ZAPASOWĄ DANYCH, KTÓRYCH NIE CHCEMY STRACIĆ. Jeśli jeszcze nie robisz tego regularnie, to dla własnego dobra - zacznij.

## 1.2 Wyrazy uznania

Michel Aubry - łata do VIA do włączania UDMA dla jądra 2.0.33 i inne; zunifikowana łata UDMA dla 2.0.34+.

Andrew Balsa - dostarczył ogólnych informacji na temat UDMA oraz łatę UDMA do Intel TX, SiS i VP1 dla jądra 2.0.33 oraz zunifikowaną łatę dla 2.0.34+.

Maxime Baudin - tłumaczenie francuskie

Bokonon - ``Controller'' vs. ``interface''

John G. - łata do VIA VP2 dla jądra 2.0.33 i różne informacje

Martin Gaitan - obejście instalacji dla Ultra33 ide0/ide1

Andre M. Hedrick - aktualny opiekun systemu IDE w Linuksie

Hĺvard Tautra Knutsen - tłumaczenie norweskie

Norman Jacobowitz - nakłonił mnie do dodania informacji o VP3

John Levon - informacja o TX Pro

Peter Monta - informacja o używaniu dwóch sterowników Ultra33

Masayoshi Nakano - tłumaczenie japońskie

Gadi Oxman - łata do Ultra33 dla jądra 2.0.34 i znalazł tajemnicze numerki do zastosowania w obejściu

Andy Pearce - zasugerował dodanie informacji o dodatkowych plikach urządzeń hde, hdh

Andrei Pitis - łata dla LILO

Brion Vibber - ten dokument

## 1.3 Prawa autorskie

Dokument ten można kopiować i dystrybuować w celach informacyjnych bez ograniczeń. Nie wolno go modyfikować bez zgody autora z wyjątkiem zmiany wyglądu. Tumaczenie tego dokumentu jest dozwolone. Jednak zalecany jest kontakt z autorem, aby otrzymać najnowszą wersję.

## 2. Co to jest Ultra-DMA i dlaczego tego chcę?

Oto krótki przegląd technologii opartych na IDE:

## 2.1 IDE, EIDE, ATAPI

Są to starsze technologie dyskowe. Większość interfejsów nie-SCSI i dyskowych, które można dzisiaj kupić, to EIDE chociaż wiele dużych dysków umie obsługiwać UDMA. [Od tłumacza: ponieważ dokument jest z XI.1999, więc warto dopowiedzieć, że w tej chwili II.2001 praktycznie wszystkie szanujące się firmy wypuszczają dyski z obsługą UDMA (najlepiej ATA100)].

## 2.2 Bus Master DMA

Bus master DMA to technologia zwiększająca prędkość transferu danych z/do dysku twardego, która wymaga obslugi przez płytę główną i BIOS i chociaż najmniejszej obsługi ze strony dysku.

Więcej możesz się dowiedzieć pod adresem http://developer.intel.com/design/pcisets/busmastr/FAQs.htm.

## 2.3 Ultra-DMA/Ultra-ATA/Ultra33/...

Ultra-DMA ma wiele nazw - tutaj będziemy je nazywać UDMA.

UDMA jest bardziej zaawwansowaną technologią, która umożliwia o wiele większe transfery (do 33,3 MB/s w UDMA 2 i 66,7 w UDMA 4) od dwóch do czterech razy szybciej niż EIDE i po znacznie niższej cenie niż SCSI. Wiele nowych komputerów dostarczanych jest z dużymi dyskami UDMA i interfejsami UDMA. Możliwe jest też dodanie interfejsów UDMA (jak np. Promise Ultra33/66) do komputera, aby zwiększyć transfery dysków bez obsługi UDMA.

Dużo szczegółów na temat UDMA można się dowiedzieć ze strony http://www.quantum.com/src/whitepapers/ultraata/

Należy zauważyć, że długość taśmy łączącej urządzenie z kontrolerem UDMA musi być mniejsza od zwykłego DMA - najlepiej mniej niż 30 cm, maksymalnie 45 cm. Jeśli chcemy mieć 66 MB/s, to wymagana jest taśma 80-pinowa i na pewno nie dłuższa niż ww. Jeśli pojawia się dużo błędów CRC, to należy użyć krótszej taśmy.

## 2.4 Właściwie to jak ,,ultra'' to jest?

Zanim zaczniemy, pozwolę sobie wyjaśnić drobne nieporozumienie. Te transfery 33 MB/s i 66 MB/s to transfery maksymalne (burst transfer rate) i nie doświadcza się ich zbyt często. Oto mały wyciąg z ,,generic UDMA.txt'':

> `

>     Transfery chwilowe/maksymalne (burst) powinny osiągać wartości od 16,6 MB/s (dla PIO 4 i DMA
>     2) do 33 MB/s dla UDMA. W swojej łacie do jądra 2.1.55 Kim-Hoe Pang
>     wyliczył te transfery z zależności 60 ns/słowo co daje 33 MB/s.

>     Jednak transfery takie dotyczą tylko danych przesyłanych z/do cache'u
>     (476 kB dla dysku IBM 6,4 GB) i nie są zbyt odpowiednie dla
>     większości użytkowników Linuksa.

>     Jądro Linuksa używa tyle RAMu ile się tylko da, aby cache'ować dane z
>     dysku. Tak więc jeśli czegoś nie ma w tej podręcznej pamięci jądra, to
>     jest bardzo małe prawdopodobieństwo, że będzie w o wiele mniejszym cache'u
>     dysku.

> `

O wiele bardziej odpowiedni będzie sustained transfer rate, czyli prędkość z jaką dane są transportowane z dysku do głównej pamięci, gdzię mogą być użyte. Prostym sposobem na zmierzenie tego transferu jest użycie polecenia `hdparm` - np `hdparm -Tt /dev/hda`, aby zmierzyć transfer pierwszego dysku IDE.

> `

>     Oto trochę danych zebranych po intesnywnym testowaniu hdparmem:
>     [od tłumacza: W tej chwili (II.2001) te transfery wyglądają znacznie
>     lepiej]

>     PIO tryb 4:     +/- 5,2 MB/s
>     DMA tryb 2:     +/- 7,2 MB/s
>     UDMA tryb2:     +/- 9,8 MB/s

> `

Jak widać, UDMA jest prawie dwa razy szybsze od EIDE i znacząco szybsze niż zwykłe ,,bus mastering DMA''. Większość obecnych dysków UDMA potrafi osiągnąć tranfery między 10 a 15 MB/s w UDMA 2 (33 MB/s) i UDMA 4 (66 MB/s).

## 2.5 Jak się ma UDMA do SCSI?

Nie mam żadnych konkretnych liczb, abym mógł je podać, ale ogólnie dyski SCSI są szybsze od UDMA. Jednak jeśli spojrzeć na cenę, to można zauważyć, że dyski UDMA są o wiele tańsze. Stosunek wydajność/cena jest znacznie lepszy dla UDMA.

## 3. Używanie dysku UDMA z interfejsem EIDE.

To jest akurat łatwe do zrobienia. Ponieważ wszystkie dyski UDMA są kompatybilne z EIDE, należy po prostu podpiąć dysk UDMA do interfejsu EIDE i Linux nie powinien mieć najmniejszych problemów z wykryciem go. Należy pamiętać, że transfery będą takie jak na zwykłym EIDE.

## 4. Używanie dysku UDMA z interfejsem UDMA

Mam dwie wiadomości: dobrą i złą. Dobra, to ta, że interfejs UDMA można używać zarówno dla dysków UDMA i ,,legacy EIDE''. Będzie o wiele szybciej niż w interfejsie EIDE.

Zła wiadomość to ta, że stare jądra (2.0.x) nie obsługują UDMA zbyt dobrze. Nowsze jądra 2.2.x obsługują UDMA33, a do tych, które nie obsługują, są dostępne łaty.

Dodatkowo należy zaznaczyć, że niektóre interfejsy UDMA, które są dodawanymi kartami a nie są wbudowane w płytę główną, wymagają jakiejś łaty lub kilku sztuczek, żeby używać ich ze starym jądrem. Oto po co w ogóle ten dokument istnieje - aby wyjaśnić jak zdobyć łaty i jakie to są sztuczki.

## 5. Interfejsy UDMA PCI nie zintegrowane z płytą główną

Istnieją interfejsy UDMA jako karty PCI, przy pomocy których można dodać obsługę UDMA bez wymiany płyty głównej lub dodać kolejny kontroler jeśli istniejące zostały już zapełnione. Są one także czasami instalowane w nowych komputerach: Gateway 2000 i Dell.

Większość z nich nie jest obsługiwana przez stare jądra serii 2.0.x, ale wiele powinno być obsługiwanych przez jądra 2.2.x. Jednak niektóre z najnowszych takich kart (np. Promise Ultra66) nie są obsługiwane nawet przez najnowsze jądra [od tłumacza: teraz (II.2001) jednak chyba już większość jest obsługiwana]. Jeśli posiadasz taką kartę, to musisz zainstalować łatę na jądro albo znaleźć nowsze z obsługą twojej karty. Jeśli musisz zainstalować Linuksa na dysku na takim interfejsie, to trzeba będzie trochę pokombinować.

## 5.1 Promise Ultra33

Jest to karta PCI z dwoma kanałami UDMA, obsługująca do 4 dysków. Specyfikacje i ceny można znaleźć pod adresem http://www.promise.com. Karta ta jest we wczesnych modelach Gateway 2000 Pentium II.

Jądra 2.0.35 i nowsze oraz wszystkie 2.2.x obsługują Ultra33 i nie powinno być problemów z zainstalowaniem dystrybucji opartej na tych jądrach. Starsze jądra nie obsługują tego standardu i z instalacją Linuksa starszej wersji możgą być kłopoty jeśli nie można lub nie chce się przejść na nowsze jądro.

Instalacja Linuksa z obsługą Ultra33

Pomimo iż jest łata do interfejsu Ultra 33, to zainstalowanie jej i kompilacja jądra nie jest prostą sprawą jeśli nigdy nie instalowałeś Linuksa. Jest więc pewne obejście, które pozwala zainstalować system na takim interfejsie. Podziękowania dla Gadi Oxmana za poniższe informacje na temat ustawień interfejsu:

> `

>     Jeśli jest dostęp do konsoli z dysku instalacyjnego, to można
>     wyświetlić ustawienia karty Promise poleceniem "cat /proc/pci":

>         RAID bus interface: Promise Technology Unknown device (rev 1).
>           Vendor id=105a. Device id=4d33.
>           Medium devsel.  IRQ 12.  Master Capable.  Latency=32.
>           I/O at 0xe000.   (a)
>           I/O at 0xd804.   (b)
>           I/O at 0xd400.   (c)
>           I/O at 0xd004.   (d)
>           I/O at 0xc800.   (e)

>     i przekazać do jądra parametry "ide2=a,b+2 ide3=c,d+2".

> `

Uwaga: Liczby podane tutaj będą się różnić od Twoich. Przykładowymi parametrami w tym przypadku będą: ```ide2=0xe000,0xd806 ide3=0xd400,0xd006`''. Jeśli używany jest tylko pierwszy kanał Ultra33 (np. jeśli jest tylko jeden dysk czy dwa jeśli są to master i slave na jednym kanale) wtedy nie trzeba podawać `ide3`.

Red Hat 5.1:Należy wystartować z dyskietki startowej i wcisnąć ENTER po pojawieniu się zachęty. Jądro wystartuje i pojawi się zapytanie o język, klawiaturę i metodę instalacji. Źródło instalacji nie ma znaczenia, ważny jest kolejny krok: powinno się pojawić okienko zatytułowane ``Select Installation Path'', wciskamy Alt-F2, aby przejść do linii poleceń. Wpisujemy ```cat /proc/pci`'', zapisujemy liczby, które się pojawią i startujemy ponownie z dyskietki startowej. Tym razem, gdy pojawi się zachęta wpisujemy ```linux ide2=` (tutaj te numerki spisane wcześniej jak na przykładzie wyżej)`ide3=`(i kolejne numerki)''. Teraz instalacja na dysk twardy powinna odbyć się już bez problemów, chociaż LILO będzie pewnie miało problemy z zainstalowaniem się. Zamiast instalować LILO trzeba zrobić dyskietkę startową i startować z niej z parametrami jw. dopóki nie będzie można załatać jądra i LILO.

Red Hat 5.0 i Slackware 3.4:Tutaj sytuacja jest podobna, z małym wyjątkiem: programy instalacyjne ignorują `/dev/hde-h` (dyski na `ide2` i `ide3`). Aby zainstalować Linuksa na lub z takiego dysku trzeba nadpisać jeden lub oba kanały z płyty głównej. Jednak uwaga na nadpisanie kanału, z którego odbywać się będzie instalacja. Np. jeśli instalacja odbędzie się z CD-ROMu na `/dev/hdd` (`ide1` - kontroler na płycie głównej) na dysk `/dev/hde` (`ide2` - Ultra33), trzeba nadpisać `ide0` przez `ide2` a zostawić `ide1`. Przy starcie z dyskietki ratunkowej pojawi się zachęta w RH 5.0 natomiast Slackware udostępnia powłokę w trybie instalacyjnym. Jednak RH 5.0 stwarza problemy z wystartowaniem po instalacji. Jeśli takie problemy pojawią się można sciągnąć dyskietkę startową Slackware'a z ftp://ftp.icm.edu.pl/pub/linux/slackware/slackware-current/bootdsks.144/ i użyć tej dyskietki.

W wypadku innych dystrybucji trzeba trochę poimprowizować, ale proces powinien być podobny.

WAŻNE: Bez łaty (omawianej w punkcie Zunifikowane IDE) jądro potrzebuje parametrów startowych, aby dostać się do dysku! Z tego powodu bardzo ważnym jest podczas konfiguracji LILO (na dysku lub dyskietce), aby podać dokładnie te same parametry jak podczas instalacji. W przeciwnym wypadku system nie wystartuje! Można te parametry przekazać podczas startu systemu (tak samo jak podczas instalacji) w zachęcie LILO wciskając SHIFT i wpisując ```linux ide2=`.....'' za każdym razem. Polecam jednak czym prędzej załatać jądro i zapomnieć o wpisywaniu tych parametrów. Z tego co się orientuję, to nie ma sposobu przekazania parametrów do jądra startującego z dyskietki, TRZEBA używać LILO lub innego programu ładującego system, który pozwala na przekazywanie parametrów.

Niełatane jądra i programy instalacyjne często mają problemy z używaniem ide2 czy ide3 nawet jeśli napędy zostały poprawnie wykryte. Jeśli nie można użyć tych interfejsów przy pomocy powyższej techniki, to można spróbować podać ide0 lub ide1 zamiast ide2 czy ide3 (podziękowania dla Martina Gaitana). To podmienia interfejsy na płycie głównej na Promise Ultra33 i można kierować się wskazówkami z następnego punktu tak jak po fizycznej zamianie tych interfejsów. Jeśli do instalacji użyty zostanie CD-ROM, to należy uważać, żeby nie podmienić interfejsu, do którego jest on podpięty, bo instalacja będzie nie możliwa! Jeśli jest to hda lub hdb, to dysk należy podpiąć do ide1 w przeciwnym razie (hdc, hdd) - do ide0.

Instalacja Linuksa omijająca Ultra33

Jeśli nie można zastosować takiego obejścia jw., to trzeba spróbować czegoś innego. Oto alternatywna metoda, która gwarantuje działanie, ale wymaga otwarcia komputera i pogrzebania w nim. UWAGA: Jeśli nie bardzo wiesz jak podłączać i odłączać dyski, to radzę zapoznać się z podręcznikiem, który otrzymałeś z dyskiem czy sterownikiem! Jeśli coś pochrzanisz i nie będziesz wiedział jak to złożyć spowrotem, to będziesz żałować!

Skoro już to napisałem, to reszta jest już prosta. Większość płyt głównych z czasów obecnych ma wbudowane interfejsy EIDE. Należy odłączyć dysk od Ultra33 i podłączyć go do EIDE. Jeśli są jakieś inne urządzenia IDE, to należy albo podłączyć dysk na nie używanym kanale, albo chwilo odłączyć urządzenie, które nie jest teraz potrzebne. Potem: zainstaluj Linuksa, ściągnąć łatę, zainstalować ją na jądro (następny punkt).

Teraz można już przełączyć dysk spowrotem do interfejsu Promise... no prawie. Na wszelki wypadek należy zrobić dyskietkę startową (`cd /usr/src/linux ; make zdisk`), którą będzie można użyć do startu systemu jeśli LILO nie będzie działać. A żeby być jeszcze bardziej pewnym można zrobić dwie i jedną odłożyć na bok.

Dobra, to teraz czas trochę pomyśleć. Jeśli na interfejsie Promise jest tylko jeden dysk, to będzie to `/dev/hde` (`a` i `b` to pierwszy kontroler IDE, `c` i `d` - drugi). Ewentualne dodatkowo umieszczane tam napędy będą przyjmować kolejne litery od `e` tak jak dyski IDE.

Teraz trzeba zmodyfikować plik `/etc/fstab` i podmienić wpisy `hda, hdb, ...` na odpowiednie `hde, hdf, ...`. Jeśli zmieniona została lokalizacja (z master na slave) jakiegoś innego urządzenia (CD-ROM, ZIP) lub jakieś wyjęte, które mają zostać w komputerze, to także trzeba je dopisać do tego pliku.

W przypadku użycia LILO, trzeba także skonfigurować i je, aby używało nowych plików urządzeń (omawianie konfiguracji LILO jest poza zakresem tego dokumentu. Aby dowiedzieć się jak to się robi zajrzyj do LILO mini-HOWTO. W przeciwnym wypadku trzeba będzie użyć dyskietki, która została zrobinoa wcześniej, którą i tak trzeba teraz skonfigurować, aby widziała dysk na `hde`. Robi się to poleceniem `rdev`. Wkładamy dyskietkę do stacji i wpisujemy ```rdev /dev/fd0 /dev/hde1`''. Oczywiście zakładam tutaj, że Twoja główna partycja jest pierwszą na dysku pierwszym. Jeśli nie, to użyj poprawnego numeru partycji!

Reboot. Teraz system powinien działać poprawnie.

Instalowanie łaty do Ultra33

Jądra w wersji 2.0.35 i nowsze mają wbudowaną obsługę Promise Ultra33. Trzeba tylko ściągnąć takie jądro z ftp.icm.edu.pl i je skompilować.

Instrukcji jak to zrobić należy szukać w Kernel HOWTO.

Używanie dwóch kart Ultra33 w jednym komputerze

W tej chwili nie działa... Nie radzę próbować o ile oczywiście nie masz ochoty na kompilacje jądra i kombinowanie z różnymi konfiguracjami.

## 5.2 Promise Ultra66

Jest to mnie więcej to samo urządzenie co Ultra33, tyle że obsługuje UDMA 4 66 MB/s. Niestety nie ma jeszcze obsługi w jądrach 2.2.x

Obsługa jest zawarta w dostępnej łacie dla jąder 2.0.x i 2.2.x pod adresem ftp.icm.edu.pl oraz w jądrach rozwojowych 2.3.x od 2.3.3 w górę.

Jednak zanim będzie można załatać jadro lub uaktualnić je, to trzeba zastosować te same sztuczki co dla Promise Ultra33. Albo można użyć dystkietki startowej udostępnionej przez Promise.

## 5.3 Artop ATP850UF

Ta karta jest obsługiwana przez zunifikowany kod IDE. Instalacja Linuksa na niej może być podobna do instalacji na Promise Ultra33.

## 5.4 Dodawanie plików urządzeń.

Trzeci i czwarty interfejs IDE (ide2 i ide3) używają plików urządzeń `/dev/hde*` do `/dev/hdh*`. W przypadku starszych jąder pliki te nie były tworzone automamtycznie i trzeba je dodać ręcznie, aby dysk działał.

W źródłach któregoś z nowszych jąder, znajduje się skrypt `/usr/src/linux/scripts/MAKEDEV.ide`, który wystarczy uruchomić.

## 6. Interfejsy UDMA na płycie głównej

Używają one standardowych portów I/O IDE i są w pełni kompatybilne z wolniejszymi transferami na niełatanym jądrze 2.0.x. Przez to nie powinny sprawiać żadnych problemów podczas instalacji a instalacja łaty to tylko polepszenie szybkości a nie wymagany krok. Trochę obsługi UDMA jest w najnowszych jądrach 2.0.x a obsługa chipsetów Intela znajduje się w jądrach 2.2.x.

## 6.1 Intel FX, HX, VX, TX, LX i BX

Jeszcze raz dziękuje Gadiemu za tę informację:

> `

>     Obsługa <it/bus mastering DMA/ dla chipsetu TX jest w jądrach 2.0.31+

> `

W starszych jądrach interfejs ten będzie używany w wolniejszym trybie EIDE. W każdym razie interfejs ten zostanie automatycznie wykryty i nie powinien sprawiać żadnych kłopotów.

Pełna obsługa UDMA 2 dla tych chipsetów jest zawarta w jądrach 2.2.x i zunifikowanej łacie IDE; zobacz Zunifikowane IDE.

## 6.2 VIA VP2 i podobne chipsety

Interfejs ten także jest automatycznie wykrywany i może być używany przez niełatane jądro. Ale skoro masz już taki interfejs, to warto ściągnąć i zainstalować łatę, żeby mieć szybsze transfery i pozbyć się dość denerwującego komunikatu "unkown PCI device".

Jedna łata jest dostępna pod adresem www.ipass.net. Przeznaczona jest dla VIA VP2/97 znajdującego się na płytach głównych FIC PA-2007 i PA-2011. Ale może też działać na podobnych chipsetach. Zgłaszano też, że łata ta działa z VIA VP3; niekoniecznie musi być to prawdą w każdym przypadku.

Należy zauważyć, że ta łata obsługuje tylko tryb Bus Mastering, a nie pełną tryb UDMA, ale i tak lepsze to niż zwykłe EIDE. Aby uruchomić tryb BMDMA należy postępować zgodnie ze wskazówkami na stronie z łatą.

Jest jeszcze inna łata, która w pełni obsługuje UDMA - www.pyreneesweb.com. Przeznaczona jest dla VIA VT82C586B i powinna także działać z VP2, VP3, VPX, P6 i AGP Apollo. Aby ją zainstalować należy postępować zgodnie z zawartymi tam wskazówkami. Zalecane jest jednak zrobienie kopii zapasowej najważniejszych danych ponieważ istnieje możliwość wystąpienia problemów z niekompatybilnymi płytami głównymi. Jeśli jednak łata zadziała, to będzie już działać bez problemów.

Chipset VP1 nie działa z tymi łatami, ale jest obsługiwany przez łatę dla zunifikowanego IDE.

## 6.3 TX Pro i inne płyty główne ,,Pro''

UDMA nie jest poprawnie obsługiwane przez te płyty. Nie są takie same jak TX mobo i najwidoczniej źlę raportują informacje o DMA - stąd problemy. Słyszałem, że ktoś nad tym pracuje więc pewnie łata pojawi się w przyszłości.

## 6.4 HPT 366

Ten chipset jest na popularnych płytach Abit BP-6 oraz innych i dotarcza UDMA 4 66 MB/s jako doatek do dwóch innych kanałow w trybie 2 33 MB/s. Obsługa jest poprzez zunifikowany kod IDE, ale nie ma jej w żadnym z obecnych jąder. Tak więc instalacja może być podobna do tej z kartą Promise Ultra33.
[Od tłumacza: obsługa jest w jądrach 2.3.99+ oraz 2.4.x]

## 7. Zunifikowana łata IDE

Zunifikowana łata do IDE dostarcza obsługę wielu chipsetów i kart rozszerzeń. Łaty takie są dostępne dla jąder, 2.0, 2.2 i 2.3. Jeśli obecnie użytkowane jądro nie obsługuje posiadanego chipsetu, to należy je załatać.

Łatami tymi opiekuje się Andre Hedrick, można je ściągnąć z najbliższej kopii serwera ftp.kernel.org.

UDMA jest obsługiwane w poniższych chipsetach i prawdopodobnie w wielu innych, których nie znam:

- Wszystkie chipsety Intela: FX, HX, VX, TX, LX
- Wszystkie chipsety SiS (przetestowany tylko SiS5598, ale cała rodzina tych chipsetów ma ten sam wbudowany interfejs 5513)
- Chipsety VIA (przetestowany tylko 82C586B, ale tak jak wyżej cała rodzina chipsetów ma ten sam interfejs). W interfejsach na VIA obsługiwana jest specjalna diagnostyka
- Promise i Artop PCI UDMA.
- Aladdin V (ALi15x3)
- HPT343 i HPT366 (zobacz Abit BP-6)

Kod jest napisany tak, aby było go łatwo rozszerzyć o obsługę kolejnego chipsetu.

Oto kilka uwag od Andre Balsa'y, autora wcześniejszej łaty:

> `

>     Na dobrej płycie głównej z dyskiem IBM UDMA można osiągnąć prawie
>     maksymalny transfer: 10 Mb/s (zmierzone 'hdparm -t -T').

>     Chipset Intela TX ma pojedynczą kolejkę FIFO dla dysków i jest ona
>     dzielona przez dwa interfejsy IDE, tak więc używanie dwóch dysków UDMA
>     spowolni ich działanie.
>     Jednak, SiS5598 ma dwa oddzielne interfejsy, każdy z własną kolejką
>     FIFO. Teoretycznie można się zbliżyć do 66 Mb/s na płytach głównych
>     z chipem SiS5598 używając software'owego RAID0. SiS5571 ma chyba tę
>     samą strukturę interfejsu. Nie mam żadnych danych na temat VIA, więc
>     nie mogę nic na ten temat powiedzieć.

>     Sterownik IDE (U)DMA napisany przez Marka Lorda ma szczególnie krótki
>     czas konfiguracji (a stąd opóżnienia w transferach). Jest on idealny
>     do częstych transferów
>     małych paczek danych (takich jak serwery news) i może być lepszy od
>     technologii SCSI.

> `

## 8. Włączanie i wyłączanie UDMA

Jądro z wkompilowaną obsługą UDMA włączy je automatycznie jeśli wykryje napęd UDMA. W większości przypadków, kiedy obsługa taka się nie włączy to albo jądro nie umie obsłużyć chipsetu (zdobądź łatę, patrz wyżej) albo włączenie obsługi nie jest uważane za bezpieczne.

Jednak czasami napęd umie obsługiwać UDMA, ale BIOS tego nie podaje. W takich przypadkach należy włączyć obsługę ręcznie.

## 8.1 Parametry jądra podczas startu

W jądrach 2.1.113+ można włączyć obsługę DMA dla obu napędów na podanym interfejsie IDE przy pomocy parametru jądra `ideX=dma`, gdzie X jest numerem interfejsu (pierwszy to '0'). Jednak podanie tego parametru wcale nie musi uaktywnić UDMA.

Parametry do jądra można przekazać przez LILO, LOADLINa czy większości popularnych programów ładujących system. Więcej informacji można znaleźć w Bootdisk HOWTO.

## 8.2 Używanie hdparm

Jest to program służący do ustawiania różnych parametrów dysku twardego. Jedną z możliwości jest włączenie obsługi UDMA i pomiar szybkości stałego przesyłu danych.

Bieżąca wersja `hdparm`u to 3.6 (w czasie pisania) [Od tłumacza: w tej chwili jest wersja 3.9]]. Starsze, niełatane wersje nie będą poprawnie raportowały ani ustawiały parametrów związanych z UDMA, tak więc należy zdobyć aktualną wersję. Źródło znajduje się pod adresem ftp.icm.edu.pl.

Program po ściągnięciu należy skompilować mniej więcej tak:

> `

>     tar zxvf /tmp/download/hdparm-3.6.tar.gz
>     cd hdparm-3.5
>     make
>     su root
>     (podaj hasło)
>     make install
>     cp /usr/local/sbin/hdparm /sbin/hdparm
>     exit

> `

Aby włączyć DMA: `hdparm -d1 /dev/hda`

Aby wyłączyć DMA: `hdparm -d0 /dev/hda`

Aby zmierzyć szybkość dysku: `hdparm -Tt /dev/hda`

Aby zobaczyć jakie są ustawienia dysku: `hdparm /dev/hda`

Aby zobaczyć więcej danych dot. dysku niż kiedykolwiek chciałeś: (np. które tryby UDMA są włączone) `hdparm -i /dev/hda`

Więcej informacji (np. jakich trybów UDMA użyć) można znaleźć w stronie podręcznika systemowego (```man 8 hdparm`'').

## 9. Problemy

## 9.1 ,,Czarna Lista'' UDMA

Napędy wymienione poniżej znajdują się na liście nie działających. Nie wolno ich używać w trybie UDMA ponieważ może to spowodować utratę danych. Aby tego uniknąć sterownik powinien automatycznie wyłączyć obsługę DMA dla tych napędów.

- Western Digital WDC AC11000H, AC22100H, AC32500H, AC33100H, AC31600H - wszystkie wersje
- Western Digital WDC AC32100H revision 24.09P07
- Western Digital WDC AC23200L revision 21.10N21

## 9.2 Czy masz przetaktowane PCI?

Jeśli tak, to ostrożnie! Oto cytat z poprzedniej dokumentacji do UDMA:

> `

>     Nie wolno przetaktowywać szyny PCI. 37,5 MHz, to maksymalna
>     częstotliwość. Niektóre (prawdopodobnie obsługiwane) napędy UDMA nie
>     zadziałają nawet przy częstotliwości 37,5 MHz, ale 33 MHz powinno
>     działać.

>     W każdym bądź razie NIGDY _NIGDY_ ! nie wolno ustawiać szyny PCI na
>     41,5 MHz.

>     ZALECANYM bezpiecznym ustawieniem jest 33 MHz.

> `

## 9.3 Czy BIOS na płycie głównej jest aktualny?

Oto kolejny cytat z dokumentacji do UDMA:

> `

>     Tak naprawdę BIOS każdej płyty głównej przestawia napędy dyskowe na
>     tryb UDMA. Oczywiście trzeba mieć nadzieję, że taki BIOS
>     został zaprogramowany poprawnie...

>     Np. płyta główna ASUS SP-97V z oryginalnym BIOSem (rev. 1.03) będzie
>     działać niepoprawnie w trybach DMA 2 i UDMA ze zmodyfikowanym
>     sterownikiem linuksowym. Będzie natomiast działać poprawnie w trybie
>     PIO 4 oraz w Windows 95 we wszystkich trybach. Ściągnąłem najnowszy
>     BIOS (rev. 1.06) ze strony ASUSa i uaktualniłem na swojej płycie. Od
>     tego momentu działa idealnie (przy częstotliwości szyny 66 MHz).

>     Mówi nam to o fakcie, że BIOS ustawia w kontrolerze DMA pewne
>     specyficzne parametry (active pulse i recovery clock cycles) [od
>     tłumacza: jak mi ktoś zaproponuje kiedyś tłumaczenie, to przetłumaczę,
>     bo ja nie mam pojęcia o czym mowa...] Moja poprzednia wersja
>     BIOSu prawdopodobnie miała te ustawienia niepoprawne. Ponieważ
>     sterownik Windows 95 ustawia te wartości samemu (nie zależnie od
>     BIOSu) miałem problemy tylko ze sterownikiem Linuksa a pod Windows 95
>     wszystko działało poprawnie.

>     Tak więc jeszcze raz: sterownik UDMA w Linuksie polega na ustawieniach
>     BIOSu. Jeśli pojawiają się problemy należy sprawdzić czy mamy
>     najnowszą wersję BIOSu dla naszej płyty głównej.

> `

## 9.4 Jeśli nadal nie działa

Jeśli żadna ze wskazówek nie okazała się pomocna na tyle, żeby rozwiązać problemy z UDMA, najlepszym wyjście jest napisanie na grupę pl.comp.os.linux.sprzet. W wiadomości należy zawrzeć dokładny opis problemu: typ posiadanego interfejsu UDMA, czy jest na płycie głównej czy na karcie rozszerzeń, czy napęd jest w UDMA czy w zwykłym EIDE, dokładna konfiguracja napędów, wersja dystrybucji i jądra oraz wszystko inne co wydaje się być pomocne. Najprawdopodobniej znajdzie się tam ktoś pomocny.

## 9.5 Jeśli masz informacje na temat UDMA, których nie ma tutaj...

Wspaniale! Jeśli wiesz coś czego ja nie wiem, prześlij do mnie informację na ten temat ( brion@pobox.com) i ukaże się ona w kolejnej wersji.

## 10. Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Zmiany w tym dokumencie:

- W punkcie o IDE, EIDE i ATAPI dopisałem informację o dyskach UDMA w tej chwili dostępnych na rynku.
- W punkcie o ,,ultra'' dopisałem informację o transferach

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Napewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać.

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu `/pub/Linux/JTZ/`.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści `subscribe jtz Imię Nazwisko` na adres `majordomo@ippt.gov.pl`