Portál AbcLinuxu, 22. prosince 2025 19:39
hdparm -d 1 /dev/disk-o-ktery-se-jedna.
/dev/hda:
Timing buffer-cache reads: 796 MB in 2.00 seconds = 397.86 MB/sec
Timing buffered disk reads: 116 MB in 3.02 seconds = 38.45 MB/sec
/dev/hdb:
Timing buffer-cache reads: 876 MB in 2.00 seconds = 437.19 MB/sec
Timing buffered disk reads: 108 MB in 3.02 seconds = 35.74 MB/sec
/dev/hda:
Model=ST3120026A, FwRev=3.06, SerialNo=3JT2N1KB
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=off
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:240,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 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2:
/dev/hdb:
Model=ST3120023A, FwRev=3.33, SerialNo=3KA1DVAF
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=off
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:240,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 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2:
Jenom doplním máte taky v jádře podporu správného řadiče EIDE?
Podle toho co máte za řadič skuste přeložit jádro s příslušnou podporou toho řadiče.
Je možné že se používá nějaký který nespolupracuje správně s vašim řadičem na desce.
jinak jeste jedna moznost... pokud se nezdetekuje piix, cili neobjevi se soubor /proc/ide/piix, tak staci provist nasledujici pridani do zdrojaku a melo by vse snad fungovat. (okopirovano z fedorackeho)
pridat do ./include/linux/pci_ids.h radek s #define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca (nebo s/PCI_DEVICE_ID_INTEL_82801DB_10/COKOLIV/ )
potom do drivers/ide/pci/piix.h ve strukture
static ide_pci_device_t piix_pci_info[] __devinitdata = {
nekde na konec struktury pred ukoncovaci zaznam s NULL vplacnout
},{ /* 17 */
.vendor = PCI_VENDOR_ID_INTEL,
.device = PCI_DEVICE_ID_INTEL_82801DB_10,
.name = "ICH4",
.init_setup = init_setup_piix,
.init_chipset = init_chipset_piix,
.init_iops = NULL,
.init_hwif = init_hwif_piix,
.init_dma = init_dma_piix,
.channels = 2,
.autodma = AUTODMA,
.enablebits = {{0x41,0x80,0x80}, {0x43,0x80,0x80}},
.bootable = ON_BOARD,
.extra = 0,
pripadne zmenit komentar z 17 na poradove cislo nasledne po predchozim zaznamu
a pamatovat si ho jako CISLO a zmenit taky .device=COKOLIV
(COKOLIV= to za co jste substnul definici v pci_ids.h)
a nakonec do souboru drivers/ide/pci/piix.c tam toho bude vicero:
funkce:
static u8 piix_ratemask (ide_drive_t *drive)
pridat do switche
case PCI_DEVICE_ID_INTEL_82801DB_10:
mode = 3;
break;
funkce:
static unsigned int __devinit init_chipset_piix (struct pci_dev *dev, const char *name)
pridat do switche
case PCI_DEVICE_ID_INTEL_82801DB_10:
{
unsigned int extra = 0;
pci_read_config_dword(dev, 0x54, &extra);
pci_write_config_dword(dev, 0x54, extra|0x400);
}
struktura
static struct pci_device_id piix_pci_tbl[] __devinitdata = {
pridat pred konec (pred uzaviraci { 0, }, };)
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_10,PCI_ANY_ID, PCI_ANY_ID, 0, 0, 17},
pripadne 17 zmenit za CISLO z piix.h
a to bude asi vsechno dulezite.
potom jeste nepodstatne funkce
static int piix_get_info (char *buffer, char **addr, off_t offset, int count)
pridat do switche
case PCI_DEVICE_ID_INTEL_82801DB_10:
p += sprintf(p, "PIIX4 Ultra 100 ");
break;
a to uz bude asi uplne vse.
Může i takováto sestava podporovat DMA pro disky (resp. jak vysoká je pravděpodobnost, že to řadič (integrovaný) umí). Disk to umí určitě, je to nějaký relativně nový (5 let?) Seagate.
Na druhou stranu - jde přeci o SMP stroj, takže tam ta výhoda DMA u disku nebude až tak podstatná (nejedná se o mašinu pod vysokou zátěží).
Problém je pouze v řadiči jaký je na desce osazen a kolik vlastně umí obsluhovat RAM, jakou přenosovou rychlost umí atd....
PS. Dma bylo možné už i na CPU 8080 A Z80

Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.