Fórum Root.cz
Hlavní témata => Hardware => Téma založeno: Václav Lukáš 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.
# 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
-
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
-
Nebolo by lepsie forceovat konkretny rezim v BIOSe? Alebo to OS ignoruje?
-
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.
-
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.
-
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
-
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.
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.
-
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
-
Vsechny kombinace bohuzel vedou k tomu, ze DMA je na danem disku stale reportovan. Nejsem schopen jej donutit prepnout na PIO:
/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 :)