# [SOLVED] Intel 82801/ICH7 PATA: No UDMA?!

## curio77

Hello,

I haven't managed to get (U)DMA working for PATA drives connected to my Gigabyte GA-945P-type mainboard:

```
$ hdparm -d1 -k1 /dev/hdc

/dev/hdc:

 setting using_dma to 1 (on)

 HDIO_SET_DMA failed: Operation not permitted

 setting keep_settings to 1 (on)

 using_dma    =  0 (off)

 keepsettings =  1 (on)
```

/dev/hdc is a hard disk which has previously worked without any such issue on another mainboard; it's (at least?) ATA100-capable.

The hdparm attempt above syslogs the following line:

```
ide1: Speed warnings UDMA 3/4/5 is not functional.
```

The relevant portion of dmesg's boot-up output:

```
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

ide0: I/O resource 0x1F0-0x1F7 not free.

ide0: ports already in use, skipping probe

Probing IDE interface ide1...

input: AT Translated Set 2 keyboard as /class/input/input0

hdc: HDS722516VLAT80, ATA DISK drive

hdd: _NEC DVD_RW ND-4571A, ATAPI CD/DVD-ROM drive

ide1 at 0x170-0x177,0x376 on irq 15

hdc: max request size: 512KiB

hdc: 321672960 sectors (164696 MB) w/7938KiB Cache, CHS=20023/255/63

hdc: cache flushes supported

 hdc: hdc1 < hdc5 >

libata version 2.00 loaded.

ata_piix 0000:00:1f.2: version 2.00

ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ]

ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 177

ata: 0x170 IDE port busy

PCI: Setting latency timer of device 0000:00:1f.2 to 64

ata1: SATA max UDMA/133 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14

scsi0 : ata_piix

input: ImExPS/2 Logitech MX Mouse as /class/input/input1

ata1.00: ATA-7, max UDMA/133, 488395055 sectors: LBA48 NCQ (depth 0/32)

ata1.00: ata1: dev 0 multi count 16

ata1.00: configured for UDMA/133

  Vendor: ATA       Model: HDT722525DLA380   Rev: V44O

  Type:   Direct-Access                      ANSI SCSI revision: 05

SCSI device sda: 488395055 512-byte hdwr sectors (250058 MB)

sda: Write Protect is off

sda: Mode Sense: 00 3a 00 00

SCSI device sda: drive cache: write through

SCSI device sda: 488395055 512-byte hdwr sectors (250058 MB)

sda: Write Protect is off

sda: Mode Sense: 00 3a 00 00

SCSI device sda: drive cache: write through

 sda: sda1 sda2 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 >

sd 0:0:0:0: Attached scsi disk sda
```

lspci:

```
00:00.0 Host bridge: Intel Corporation 945G/GZ/P/PL Express Memory Controller Hub (rev 02)

00:01.0 PCI bridge: Intel Corporation 945G/GZ/P/PL Express PCI Express Root Port (rev 02)

00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)

00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)

00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 01)

00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01)

00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 01)

00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 01)

00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 01)

00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)

00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)

00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE (rev 01)

00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)

01:00.0 VGA compatible controller: nVidia Corporation GeForce 7900 GT (rev a1)

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. Unknown device 8168 (rev 01)

04:01.0 Multimedia video controller: Brooktree Corporation Bt848 Video Capture (rev 11)
```

To me, the first line is an indication that the ICH7 module (Intel PIIX) isn't used for the PATA part of the storage system.  As I'm not sure how the PATA part is implemented hardware-wise, I've compiled-in a number of somewhat-plausible other controller support drivers as well, to no avail.

The behavior is the same regardless of the kernel version (tried recent stable 2.6.17 gentoo-sources as well as 2.6.18-r[12]).  Also tried both hdparm-6.3 and the new hdparm-6.6.

Windows runs with UDMA-5 mode enabled for the drive in question.

I'd much appreciate any help -- PIO mode is a real pain.  Luckily, I only use this drive for backup purposes, so there's no constant load.

MarcoLast edited by curio77 on Thu Nov 09, 2006 5:19 pm; edited 1 time in total

----------

## Mickael

Hi, 

put this inside your grub.conf :

```

libata.atapi_enabled=1 hdc=noprobe
```

Also, it is necessary to have these 2 modules/drivers compiled as built-in inside the kernel (sorry for my english  :Confused:  ) :  ata_piix and libata

----------

## curio77

 *MickTux wrote:*   

> Hi, 
> 
> put this inside your grub.conf :
> 
> ```
> ...

 

Merci!  :Smile: 

In fact it should be "ide1=noprobe", but that pointed me in the right direction. An even better solution all-around was removing "generic/default IDE chipset support" from the kernel. What previously happened, evidently, was that the generic IDE driver took precedence over the chipset-specific one; this is remedied either way. IDE devices are now represented as SATA/SCSI drives as well.

For the protocol: I also had to compile-in SCSI CDROM support in order for my DVD drive to show up.

----------

## rafaelkafka

 *curio77 wrote:*   

>  *MickTux wrote:*   Hi, 
> 
> put this inside your grub.conf :
> 
> ```
> ...

 

I have the same hardware and hdparm says to me that i have dma in hda and sda :

GentooGNULinux ~ # hdparm -I /dev/hda

/dev/hda:

ATAPI CD-ROM, with removable media

        Model Number:       BENQ    DVD DD DW1650                   

        Serial Number:      KWV4610351SC0       

        Firmware Revision:  BCFC    

Standards:

        Likely used CD-ROM ATAPI-1

Configuration:

        DRQ response: 50us.

        Packet size: 12 bytes

Capabilities:

        LBA, IORDY(can be disabled)

        DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4 

             Cycle time: no flow control=120ns  IORDY flow control=120ns

Commands/features:

        Enabled Supported:

                PACKET command feature set

                DEVICE_RESET command

                Removable Media Status Notification feature set

HW reset results:

        CBLID- above Vih

        Device num = 0

GentooGNULinux ~ # hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media

        Model Number:       HDT722516DLA380                         

        Serial Number:      VDK91DTCEMKGYR

        Firmware Revision:  V43OA96A

Standards:

        Used: ATA/ATAPI-7 T13 1532D revision 1 

        Supported: 7 6 5 4 

Configuration:

        Logical         max     current

        cylinders       16383   16383

        heads           16      16

        sectors/track   63      63

        --

        CHS current addressable sectors:   16514064

        LBA    user addressable sectors:  268435455

        LBA48  user addressable sectors:  321670847

        device size with M = 1024*1024:      157065 MBytes

        device size with M = 1000*1000:      164695 MBytes (164 GB)

Capabilities:

        LBA, IORDY(can be disabled)

        Queue depth: 32

        Standby timer values: spec'd by Standard, no device specific minimum

        R/W multiple sector transfer: Max = 16  Current = 16

        Advanced power management level: unknown setting (0x0000)

        Recommended acoustic management value: 128, current value: 128

        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4 

             Cycle time: no flow control=240ns  IORDY flow control=120ns

But my K3B says that i don't have DMA.

hdparm -d1 /dev/sda and /dev/hda says that i don't have dma too.

My config : 

# IDE chipset support/bugfixes

#

CONFIG_IDE_GENERIC=y

CONFIG_BLK_DEV_IDEPCI=y

CONFIG_BLK_DEV_GENERIC=y

CONFIG_BLK_DEV_IDEDMA_PCI=y

CONFIG_IDEDMA_PCI_AUTO=y

CONFIG_BLK_DEV_PIIX=y

CONFIG_BLK_DEV_IT821X=y

CONFIG_BLK_DEV_IDEDMA=y

CONFIG_IDEDMA_AUTO=y

#

# SCSI device support

CONFIG_SCSI=y

CONFIG_SCSI_NETLINK=y

# SCSI support type (disk, tape, CD-ROM)

#

CONFIG_BLK_DEV_SD=y

CONFIG_BLK_DEV_SR=y

CONFIG_CHR_DEV_SG=y

# SCSI Transports

#

CONFIG_SCSI_SPI_ATTRS=y

CONFIG_SCSI_FC_ATTRS=y

# Serial ATA (prod) and Parallel ATA (experimental) drivers

#

CONFIG_ATA=y

CONFIG_SATA_AHCI=y

CONFIG_ATA_PIIX=y

CONFIG_PATA_IT821X=y

CONFIG_PATA_MPIIX=y

My grub.conf :

kernel   (hd0,7)/boot/2.6.20-gentoo-r8  root (hd0,7) libata.atapi_enabled=1 sr0=noprobe  splash=verbose,theme:emergence video=vesafb:ywrap,mtrr,1280x1024-16@75

I read all in this forum about this, this thread give me hope but the damn dma nerver works lol.

Many thanks for the attention and help.

Rafael Kafka

----------

## rafaelkafka

 *curio77 wrote:*   

>  *MickTux wrote:*   Hi, 
> 
> put this inside your grub.conf :
> 
> ```
> ...

 

Many thanks curio77 and MickTux, the problem of dma in dvd burn is solved and i believe that the sata 2 hd have udma6 how hdparm -i says because hdparm says that can not give dma to the /dev/hda but k3b now have dma support!I did change sr0 for hda in the grub config suggest by curio77.

I am spreading your suggestion, Curio77, to brazilain distros too, very helpful, many thanks, this was a nightmare problem and i suggest to edit the gentoo wiki about it.

Many thanks!

Rafael Kafka

----------

