Hi, the disk drive in my laptop cannot enable DMA with "hdparm -d1 /dev/hda", unless I use a kernel with the supplied patch. The patch was originally written by Erik Slagter for 2.6.12 (see http://marc.theaimsgroup.com/?l=linux-ide&m=112030174904055&w=2) and I have successfully used it until 2.6.14. I want to upgrade to 2.6.16 ASAP, so I adapted the patch for vanilla 2.6.16. It works for me, but you might want to check whether it messes up things... More info on my hardware: $ dmesg | grep SAMSUNG hda: SAMSUNG MP0804H, ATA DISK drive $ lspci | grep ICH6M 0000:00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03) The patch: diff -Naurp linux-2.6.16.orig/drivers/ide/pci/piix.c linux-2.6.16/drivers/ide/pci/piix.c --- linux-2.6.16.orig/drivers/ide/pci/piix.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/ide/pci/piix.c 2006-03-24 00:29:34.000000000 +0100 @@ -132,6 +132,7 @@ static u8 piix_ratemask (ide_drive_t *dr case PCI_DEVICE_ID_INTEL_82801DB_11: case PCI_DEVICE_ID_INTEL_82801EB_11: case PCI_DEVICE_ID_INTEL_ESB_2: + case PCI_DEVICE_ID_INTEL_ICH6_5: case PCI_DEVICE_ID_INTEL_ICH6_19: case PCI_DEVICE_ID_INTEL_ICH7_21: case PCI_DEVICE_ID_INTEL_ESB2_18: @@ -447,6 +448,7 @@ static unsigned int __devinit init_chips case PCI_DEVICE_ID_INTEL_82801EB_11: case PCI_DEVICE_ID_INTEL_82801E_11: case PCI_DEVICE_ID_INTEL_ESB_2: + case PCI_DEVICE_ID_INTEL_ICH6_5: case PCI_DEVICE_ID_INTEL_ICH6_19: case PCI_DEVICE_ID_INTEL_ICH7_21: case PCI_DEVICE_ID_INTEL_ESB2_18: @@ -578,6 +580,7 @@ static ide_pci_device_t piix_pci_info[] /* 22 */ DECLARE_PIIX_DEV("ICH4"), /* 23 */ DECLARE_PIIX_DEV("ESB2"), /* 24 */ DECLARE_PIIX_DEV("ICH8M"), + /* 25 */ DECLARE_PIIX_DEV("ICH6M"), }; /** @@ -655,6 +658,7 @@ static struct pci_device_id piix_pci_tbl { 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_ICH8_6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 24}, + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 25}, { 0, }, }; MODULE_DEVICE_TABLE(pci, piix_pci_tbl); diff -Naurp linux-2.6.16.orig/include/linux/pci_ids.h linux-2.6.16/include/linux/pci_ids.h --- linux-2.6.16.orig/include/linux/pci_ids.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/linux/pci_ids.h 2006-03-24 00:28:35.000000000 +0100 @@ -2092,6 +2092,7 @@ #define PCI_DEVICE_ID_INTEL_ICH6_0 0x2640 #define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641 #define PCI_DEVICE_ID_INTEL_ICH6_2 0x2642 +#define PCI_DEVICE_ID_INTEL_ICH6_5 0x2653 #define PCI_DEVICE_ID_INTEL_ICH6_16 0x266a #define PCI_DEVICE_ID_INTEL_ICH6_17 0x266d #define PCI_DEVICE_ID_INTEL_ICH6_18 0x266e HTH, Uwe. -- Uwe Hermann http://www.hermann-uwe.de http://www.it-services-uh.de | http://www.crazy-hacks.org http://www.holsham-traders.de | http://www.unmaintained-free-software.org
Attachment:
signature.asc
Description: Digital signature