W jaki sposób można wyłączyć w kontrolerze SATA obsługiwanie UDMA na
jednym z kanałów ?
Mam podłączoną kartę CF PQI x120 na takim kontrolerze
http://allegro.pl/item993329556_ssd_na_sata_cf_microdysk.html
Karta zgłasza się jako obsługująca UDMA

# hdparm -i /dev/sdc

/dev/sdc:

 Model=FLASH CARD, FwRev=20080308, SerialNo=CF0000000000000001E5
 Config={ HardSect NotMFM Removeable DTR>10Mbs nonMagnetic }
 RawCHS=1942/16/63, TrkSize=0, SectSize=576, ECCbytes=4
 BuffType=DualPort, BuffSize=1kB, MaxMultSect=1, MultSect=off
 CurCHS=1942/16/63, CurSects=1957536, LBA=yes, LBAsects=1957536
 IORDY=no, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 *udma4 
 AdvancedPM=yes: disabled (255)
 Drive conforms to: Unspecified:  ATA/ATAPI-4

 * signifies the current active mode

# hdparm -I /dev/sdc 

/dev/sdc:

CompactFlash ATA device
        Model Number:       FLASH CARD                              
        Serial Number:      CF0000000000000001E5
        Firmware Revision:  20080308
Standards:
        Supported: 4 
        Likely used: 6
Configuration:
        Logical         max     current
        cylinders       1942    1942
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:    1957536
        LBA    user addressable sectors:    1957536
        Logical/Physical Sector size:           512 bytes
        device size with M = 1024*1024:         955 MBytes
        device size with M = 1000*1000:        1002 MBytes (1 GB)
        cache/buffer size  = 1 KBytes (type=DualPort)
Capabilities:
        LBA, IORDY(may be)(cannot be disabled)
        Standby timer values: spec'd by Vendor
        R/W multiple sector transfer: Max = 1   Current = 0
        Advanced power management level: disabled
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 *udma3 udma4 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
                Power Management feature set
                WRITE_BUFFER command
                READ_BUFFER command
                NOP cmd
                CFA feature set
                Advanced Power Management feature set
           *    Gen1 signaling speed (1.5Gb/s)
           *    Host-initiated interface power management
                Device-initiated interface power management
           *    CFA advanced modes: pio5 *pio6 mdma3 *mdma4 
           *    CFA Power Level 1  (max 500mA)
Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
        not     supported: enhanced erase
        2min for SECURITY ERASE UNIT. 
HW reset results:
        CBLID- below Vih
        Device num = 0
Integrity word not set (found 0x0000, expected 0xc3a5)


W rzeczywistości jest to tania karta nie posiadająca kontrolera UDMA.
Wyłączenie w BIOS-ie trybu UDMA (zostawianie tylko MWDMA2) niczego nie
zmieniło, krenel pewnie ignoruje ustawienia w BIOSIE.

Następstwem powyższego są powtarzające się  błędy CRC:

[134732.966636] ata4.00: exception Emask 0x50 SAct 0x0 SErr 0x1280900 action 
0x6 frozen
[134732.966650] ata4: SError: { UnrecovData HostInt 10B8B BadCRC TrStaTrns }
[134732.966659] ata4.00: failed command: READ DMA
[134732.966677] ata4.00: cmd c8/00:08:c0:d7:01/00:00:00:00:00/e0 tag 0 dma 4096 
in
[134732.966681]          res 40/00:00:00:00:00/00:00:00:00:00/e0 Emask 0x54 
(ATA bus error)
[134732.966689] ata4.00: status: { DRDY }
[134732.966704] ata4: hard resetting link
[134733.493363] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[134733.513452] ata4.00: configured for UDMA/66
[134733.513462] ata4.00: device reported invalid CHS sector 0
[134733.513480] ata4: EH complete
[134745.372614] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
[134745.372621] ata4.00: BMDMA stat 0x24
[134745.372628] ata4.00: failed command: WRITE DMA
[134745.372642] ata4.00: cmd ca/00:00:00:3d:01/00:00:00:00:00/e0 tag 0 dma 
131072 out
[134745.372645]          res 51/84:00:ff:3d:01/00:00:00:00:00/e0 Emask 0x10 
(ATA bus error)
[134745.372652] ata4.00: status: { DRDY ERR }
[134745.372656] ata4.00: error: { ICRC ABRT }
[134745.372668] ata4: hard resetting link
[134745.896690] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[134745.916784] ata4.00: configured for UDMA/66
[134745.916806] ata4: EH complete
[134763.988311] ata4.00: exception Emask 0x52 SAct 0x0 SErr 0x880d00 action 0x6
[134763.988318] ata4.00: BMDMA stat 0x26
[134763.988325] ata4: SError: { UnrecovData Proto HostInt 10B8B LinkSeq }
[134763.988332] ata4.00: failed command: READ DMA
[134763.988346] ata4.00: cmd c8/00:08:e8:6b:03/00:00:00:00:00/e0 tag 0 dma 4096 
in
[134763.988349]          res 50/00:00:e8:6b:03/00:00:00:00:00/e0 Emask 0x72 
(host bus error)


Opisywany problem występuje na płycie X7SPA-HF w serwerze SuperServer
5015A-PHF firmy Supermicro 
http://www.supermicro.com/products/system/1U/5015/SYS-5015A-PHF.cfm

# lspci
00:00.0 Host bridge: Intel Corporation Pineview DMI Bridge (rev 02)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI 
Controller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI 
Controller #5 (rev 02)
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI 
Controller #6 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI 
Controller #2 (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 
(rev 02)
00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 
(rev 02)
00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 
(rev 02)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI 
Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI 
Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI 
Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI 
Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92)
00:1f.0 ISA bridge: Intel Corporation 82801IR (ICH9R) LPC Interface Controller 
(rev 02)
00:1f.2 IDE interface: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port 
SATA IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
00:1f.5 IDE interface: Intel Corporation 82801I (ICH9 Family) 2 port SATA IDE 
Controller (rev 02)
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
03:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
04:04.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200eW WPCM450 
(rev 0a)

Pamiętam, że kiedyś trzeba było wygenerować initrd z modułem kontrolera IDE 
(PATA) 
 ładowanym z odpowiednim parametrem wymuszającym  wyłączenie UDMA.
Jak to wygląda teraz ?
Korzystam ze sterownika ata_piix ponieważ w trybie ahci nie udało mi się 
podnieć systemu na karcie CF z 
używanym adapterem.
Czy poleceniem sdparm można wyłączyć tryb UDMA na danym kanale ?

Z góry dziękuję za pomoc.
Krzysztof

_______________________________________________
pld-users-pl mailing list
pld-users-pl@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-users-pl

Odpowiedź listem elektroniczym