Úplný zákaz DMA a UDMA

Úplný zákaz DMA a UDMA
« kdy: 16. 05. 2011, 16:03:45 »
Zdravim vsechny, snazim se uplne zakazat DMA a UDMA na /dev/sda. Bohuzel se mi to uplne nedari, dokazu zakazat UDMA, ale i pres vynuceni libata.nodma=0 hdparm stale reportuje vyuziti DMA. Mam podezreni, ze to vede na potize se stabilitou stroje. Mate nekdo zkusenosti s podobnym chovanim libata? (jadro 2.6.32)

Diky

V.

Kód: [Vybrat]
# dmesg
...
ata1.00: CFA: 1GB CompactFlash Card, CF B61FK, max UDMA/66
ata1.00: 2001888 sectors, multi 0: LBA
ata1.00: limited to UDMA/33 due to 40-wire cable
[b]ata1.00: FORCE: xfer_mask set to pio4
ata1.00: configured for PIO4
ata1.00: FORCE: xfer_mask set to pio4
ata1.00: configured for PIO4[/b]
ata1: EH complete
scsi 0:0:0:0: Direct-Access     ATA      1GB CompactFlash CF B PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 2001888 512-byte logical blocks: (1.02 GB/977 MiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: Attached scsi generic sg0 type 0
 sda: sda1
sd 0:0:0:0: [sda] Attached SCSI disk
...

# cat /proc/cmdline
root=UUID=fb2d07f0-cd8f-4cba-a042-83275fab9d1d ro debug [b]libata.force=pio4[/b]

# hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
        Model Number:       1GB CompactFlash Card
        Firmware Revision:  CF B61FK
Standards:
        Likely used: 4
Configuration:
        Logical         max     current
        cylinders       1986    1986
        heads           16      16
        sectors/track   63      63
        --
        bytes/track: 0  bytes/sector: 512
        CHS current addressable sectors:    2001888
        LBA    user addressable sectors:    2001888
        device size with M = 1024*1024:         977 MBytes
        device size with M = 1000*1000:        1024 MBytes (1 GB)
Capabilities:
        LBA, IORDY(cannot be disabled)
        Buffer size: 1.0kB      bytes avail on r/w long: 4
        Standby timer values: spec'd by Vendor
        R/W multiple sector transfer: Max = 1   Current = 0
        Advanced power management level: disabled
        [b]DMA: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4[/b]
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=120ns  IORDY flow control=120ns
« Poslední změna: 16. 05. 2011, 16:39:06 od Petr Krčmář »


Dadko

Re: Úplný zákaz DMA a UDMA
« Odpověď #1 kdy: 16. 05. 2011, 17:26:01 »
Mozes skusit ked tak parameter libata.force=pio0 ak si dobre pametam, ze ten parameter sa takto zapisuje. A budes to mat na najnizsej rychlosti aku IDE dokaze. Popripade parameter pio moze ist az po 7

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re: Úplný zákaz DMA a UDMA
« Odpověď #2 kdy: 16. 05. 2011, 17:27:50 »
Nebolo by lepsie forceovat konkretny rezim v BIOSe? Alebo to OS ignoruje?

Re: Úplný zákaz DMA a UDMA
« Odpověď #3 kdy: 16. 05. 2011, 21:19:58 »
Mozes skusit ked tak parameter libata.force=pio0 ak si dobre pametam, ze ten parameter sa takto zapisuje. A budes to mat na najnizsej rychlosti aku IDE dokaze. Popripade parameter pio moze ist az po 7

Mozes skusit ked tak parameter libata.force=pio0 ak si dobre pametam, ze ten parameter sa takto zapisuje. A budes to mat na najnizsej rychlosti aku IDE dokaze. Popripade parameter pio moze ist az po 7

Vsechny moznosti se chovaji stejne, pio4 byl jen priklad. Pouzita CF karta podporuje pouze rezimy pio0-pio4, nefunguje vsak zadny (hdparm vzdy reportuje dma prenos). Pri pokusu o nastaveni mwdma0-mwdma4 se bootovani natahne o nekolik minut a do dmesg se vypise par chyb.

Re: Úplný zákaz DMA a UDMA
« Odpověď #4 kdy: 16. 05. 2011, 21:23:11 »
Nebolo by lepsie forceovat konkretny rezim v BIOSe? Alebo to OS ignoruje?

Taky jsem doufal, ze to pomuze. BIOS vsak umoznuje pouze vypnuti UDMA, coz nepomohlo a hdparm dale hlasil, ze disk pracuje na UDMA.


David

Re: Úplný zákaz DMA a UDMA
« Odpověď #5 kdy: 16. 05. 2011, 22:50:14 »
i pres vynuceni libata.nodma=0 hdparm stale reportuje vyuziti DMA
Nevim, nevyznam se v tom, ale podle mych zkusenosti bych od parametru "nodma" ocekaval, ze pri zapnuti (=1) zpusobi nepouziti DMA. Pokud mas hodnotu parametru 0, vetsinou je dana funkce vypnuta.
Takze bych zkusil libata.nodma=1

Vasek

Re: Úplný zákaz DMA a UDMA
« Odpověď #6 kdy: 17. 05. 2011, 07:43:27 »
i pres vynuceni libata.nodma=0 hdparm stale reportuje vyuziti DMA
Nevim, nevyznam se v tom, ale podle mych zkusenosti bych od parametru "nodma" ocekaval, ze pri zapnuti (=1) zpusobi nepouziti DMA. Pokud mas hodnotu parametru 0, vetsinou je dana funkce vypnuta.
Takze bych zkusil libata.nodma=1

Preklep, nastavuji libata.dma=0 dle parametru kernelu.

Kód: [Vybrat]
libata.dma=0      Disable all PATA and SATA DMA
libata.dma=1      PATA and SATA Disk DMA only
libata.dma=2      ATAPI (CDROM) DMA only
libata.dma=4      Compact Flash DMA only
Combinations also work, so libata.dma=3 enables DMA for disks and CDROMs, but not CFs.

DarkKnight

Re: Úplný zákaz DMA a UDMA
« Odpověď #7 kdy: 17. 05. 2011, 11:22:14 »
co kdyz das pro libata.dma=2 nebo libata.dma=4 ? podle toho co jsi poslal by to melo zapnout POUZE pro cdrom nebo CF

Re: Úplný zákaz DMA a UDMA
« Odpověď #8 kdy: 18. 05. 2011, 10:32:40 »
Vsechny kombinace bohuzel vedou k tomu, ze DMA je na danem disku stale reportovan. Nejsem schopen jej donutit prepnout na PIO:

Kód: [Vybrat]
/proc/cmdline      hdparm -I /dev/sda
------------------------------------------------------------------------
(nic)              DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4
                   PIO: pio0 pio1 pio2 pio3 pio4
                   
libata.dma=0       DMA: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4
                   PIO: pio0 pio1 pio2 pio3 pio4
                   
libata.dma=1       DMA: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4
                   PIO: pio0 pio1 pio2 pio3 pio4
                   
libata.dma=2       DMA: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4   
                   PIO: pio0 pio1 pio2 pio3 pio4
                         
libata.dma=3       DMA: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4       
                   PIO: pio0 pio1 pio2 pio3 pio4
                   
libata.dma=4       DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4
                   PIO: pio0 pio1 pio2 pio3 pio4
                   
libata.force=pio0  DMA: mdma0 mdma1 *mdma2 udma0 udma1 udma2 udma3 udma4
                   PIO: pio0 pio1 pio2 pio3 pio4

Bezim na CF, takze vse plne odpovida specifikaci boot parametru libata, az na ten posledni radek, kdy vynucuji vyuziti PIO v mode 0. Kernel to pri bootovani potvrdi hlaskou, kterou jsem psal jiz v prvnim prispevku, nicmene hdparm stale hlasi, ze disk bezi v DMA rezimu. A muj dotaz zni, proc je to tak  :)