LINUX.ORG.RU

DMA на Intel 82801FB/FW (ICH6/ICH6W) SATA Controller


0

0

Не хотело вклячаться DMA на Intel 82801FB/FW (ICH6/ICH6W) SATA Controller Вылечилось правкой piix.c: Пока работает. Может быть кто знает не такой черезжопный способ?

piix.patch 8<---------------------------- --- drivers/ide/pci/piix.c.orig 2005-08-15 04:20:18.000000000 +0400 +++ drivers/ide/pci/piix.c 2005-08-25 13:49:15.000000000 +0400 @@ -135,6 +135,7 @@ case PCI_DEVICE_ID_INTEL_ICH6_19: case PCI_DEVICE_ID_INTEL_ICH7_21: case PCI_DEVICE_ID_INTEL_ESB2_18: + case PCI_DEVICE_ID_INTEL_ICH6_3: mode = 3; break; /* UDMA 66 capable */ @@ -449,6 +450,7 @@ case PCI_DEVICE_ID_INTEL_ICH6_19: case PCI_DEVICE_ID_INTEL_ICH7_21: case PCI_DEVICE_ID_INTEL_ESB2_18: + case PCI_DEVICE_ID_INTEL_ICH6_3: { unsigned int extra = 0; pci_read_config_dword(dev, 0x54, &extra); @@ -575,6 +577,7 @@ /* 21 */ DECLARE_PIIX_DEV("ICH7"), /* 22 */ DECLARE_PIIX_DEV("ICH4"), /* 23 */ DECLARE_PIIX_DEV("ESB2"), + /* 24 */ DECLARE_PIIX_DEV("ICH6-SATA"), };

/** @@ -651,6 +654,7 @@ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 21}, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 22}, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_18, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 23}, + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 24}, { 0, }, }; MODULE_DEVICE_TABLE(pci, piix_pci_tbl); 8<-------------------------------------------

★★★

1) используй правильное форматирование

2) Не используй IDE для SATA, используй libata(т.е. диск должен увидиться как scsi)

Deleted
()
Ответ на: комментарий от Deleted

>1) используй правильное форматирование

Прошу прощения. Повторюсь:

Не хотело вклячаться DMA на Intel 82801FB/FW (ICH6/ICH6W) SATA Controller Вылечилось правкой piix.c: Пока работает. Может быть кто знает не такой черезжопный способ?

piix.patch 8<----------------------------
--- drivers/ide/pci/piix.c.orig 2005-08-15 04:20:18.000000000 +0400
+++ drivers/ide/pci/piix.c 2005-08-25 13:49:15.000000000 +0400
@@ -135,6 +135,7 @@
case PCI_DEVICE_ID_INTEL_ICH6_19:
case PCI_DEVICE_ID_INTEL_ICH7_21:
case PCI_DEVICE_ID_INTEL_ESB2_18:
+ case PCI_DEVICE_ID_INTEL_ICH6_3:
mode = 3;
break;
/* UDMA 66 capable */
@@ -449,6 +450,7 @@
case PCI_DEVICE_ID_INTEL_ICH6_19:
case PCI_DEVICE_ID_INTEL_ICH7_21:
case PCI_DEVICE_ID_INTEL_ESB2_18:
+ case PCI_DEVICE_ID_INTEL_ICH6_3:
{
unsigned int extra = 0;
pci_read_config_dword(dev, 0x54, &extra);
@@ -575,6 +577,7 @@
/* 21 */ DECLARE_PIIX_DEV("ICH7"),
/* 22 */ DECLARE_PIIX_DEV("ICH4"),
/* 23 */ DECLARE_PIIX_DEV("ESB2"),
+ /* 24 */ DECLARE_PIIX_DEV("ICH6-SATA"),
};

/**
@@ -651,6 +654,7 @@
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 21},
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 22},
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_18, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 23},
+ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 24},
{ 0, },
};
MODULE_DEVICE_TABLE(pci, piix_pci_tbl);

piix.patch 8<----------------------------

>2) Не используй IDE для SATA, используй libata(т.е. диск должен увидиться как scsi)

Я правильно понял? Это:

.config----------------------------------
#
# SCSI device support
#
CONFIG_SCSI=y
........................
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
........................
#
# SCSI low-level drivers
#
CONFIG_SCSI_SATA=y
CONFIG_SCSI_ATA_PIIX=y
.config----------------------------------

Если так, то SATA диск определяется как SCSI,
IDE определяется как IDE, но DMA не включается
ни у SCSI, ни у IDE дисков. :(

qwe ★★★
() автор топика
Ответ на: комментарий от Deleted

У меня SATA и IDE.
Вроде пока работает.

>hdparm не поддерживает пока sata-диски

# hdparm -d0 /dev/hda

/dev/hda:
 setting using_dma to 0 (off)
 using_dma    =  0 (off)

# hdparm -t /dev/hda

/dev/hda:
 Timing buffered disk reads:   20 MB in  3.05 seconds =   6.55 MB/sec

# hdparm -d1 /dev/hda

/dev/hda:
 setting using_dma to 1 (on)
 using_dma    =  1 (on)

# hdparm -t /dev/hda

/dev/hda:
 Timing buffered disk reads:  168 MB in  3.03 seconds =  55.49 MB/sec

:)

qwe ★★★
() автор топика
Ответ на: комментарий от Deleted

>А ты как sda диск покажи через libata, что правильно

Не совсем понял. SATA диск у меня hda.

qwe ★★★
() автор топика
Ответ на: комментарий от qwe

> SATA диск у меня hda.

это костыль

сата нужно использовать через libata, тогда он определится как скази девайс

JB ★★★★★
()
Ответ на: комментарий от JB

Конечно костыль. О чем и речь. Определиться-то он определяется, но не включается DMA, ни у него, ни у IDE диска.

qwe ★★★
() автор топика
Ответ на: комментарий от qwe

Блин, я тебя спрашиваю уже второй раз :)

Если ядро скомпилить нормально(т.е. с libata, чтобы диск определялся как sda), какая скорость?

Deleted
()
Ответ на: комментарий от qwe

Соврал, нормальная скорость. Но тем не менее на IDE дисках DMA не включается.

qwe ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.