[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1206525562.7022.16.camel@pitcairn.cambridgebroadband.com>
Date: Wed, 26 Mar 2008 09:59:22 +0000
From: Alex Bennee <kernel-hacker@...nee.com>
To: LKML <linux-kernel@...r.kernel.org>
Subject: DMA not working on SATA?
Hi,
Since I got my new machine I noticed it seemed to be running slower than
I expected for a duel core machine including a lot of stuttering. After
tweaking the BIOS settings from "Legacy" to "AHCI" I measured a doubling
of read performance with hdparm but heavy IO still makes the machine
sluggish, with top showing ~80% of the time in the wait state (and
loadavg shooting up). This seems like a DMA problem because I was under
the impression a task demanding IO should be able to sleep on a DMA
completion rather than blocking everything else.
Looking with hdparm I get the following info on my disk:
root@...cairn:/home/ajb# hdparm -v -i /dev/sda
/dev/sda:
IO_support = 0 (default 16-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19457/255/63, sectors = 312581808, start = 0
Model=ST3160815AS , FwRev=3.AAD , SerialNo= 6RA38XMD
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=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
IORDY=on/off, tPIO={min:120,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: Unspecified: ATA/ATAPI-1,2,3,4,5,6,7
* signifies the current active mode
Which seems to indicate DMA is supported but not on. Attempting to
switch it on with -d just fails:
root@...cairn:/home/ajb# hdparm -v -d 1 /dev/sda
/dev/sda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Inappropriate ioctl for device
IO_support = 0 (default 16-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19457/255/63, sectors = 312581808, start = 0
I'm currently running an Ubuntu (7.10) distro kernel although I can get
a test kernel running if it helps to debug:
root@...cairn:/home/ajb# uname -a
Linux pitcairn 2.6.22-14-generic #1 SMP Tue Feb 12 02:46:46 UTC 2008
x86_64 GNU/Linux
The (hopefully) relevant chunks of lspci show this:
root@...cairn:/home/ajb# lspci -v
00:1f.0 ISA bridge: Intel Corporation 82801IH (ICH9DH) LPC Interface Controller (rev 02)
Subsystem: Intel Corporation Unknown device 5044
Flags: bus master, medium devsel, latency 0
Capabilities: [e0] Vendor Specific Information
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller (rev 02) (prog-if 01 [AHCI 1.0])
Subsystem: Intel Corporation Unknown device 5044
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 21
I/O ports at 3428 [size=8]
I/O ports at 3434 [size=4]
I/O ports at 3420 [size=8]
I/O ports at 3430 [size=4]
I/O ports at 3020 [size=32]
Memory at 53225000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/4 Enable-
Capabilities: [70] Power Management version 3
Capabilities: [a8] #12 [0010]
Capabilities: [b0] Vendor Specific Information
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
Subsystem: Intel Corporation Unknown device 5044
Flags: medium devsel, IRQ 10
Memory at 53226000 (64-bit, non-prefetchable) [size=256]
I/O ports at 3000 [size=32]
03:00.0 IDE interface: Marvell Technology Group Ltd. 88SE6101
single-port PATA133 interface (rev b2) (prog-if 8f [Master SecP SecO
PriP PriO])
Subsystem: Marvell Technology Group Ltd. 88SE6101 single-port
PATA133 interface
Flags: bus master, fast devsel, latency 0, IRQ 17
I/O ports at 1018 [size=8]
I/O ports at 1024 [size=4]
I/O ports at 1010 [size=8]
I/O ports at 1020 [size=4]
I/O ports at 1000 [size=16]
Memory at 53100000 (32-bit, non-prefetchable) [size=512]
Capabilities: [48] Power Management version 2
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit-
Queue=0/0 Enable-
Capabilities: [e0] Express Legacy Endpoint IRQ 0
And the (snipped) dmesg output:
[ 30.478794] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps
0x3f impl SATA mode
[ 30.478797] ahci 0000:00:1f.2: flags: 64bit ncq led clo pmp pio slum
part
[ 30.478801] PCI: Setting latency timer of device 0000:00:1f.2 to 64
[ 30.479035] scsi0 : ahci
[ 30.479066] scsi1 : ahci
[ 30.479090] scsi2 : ahci
[ 30.479112] scsi3 : ahci
[ 30.479135] scsi4 : ahci
[ 30.479158] scsi5 : ahci
[ 30.479228] ata1: SATA max UDMA/133 cmd 0xffffc200005f8100 ctl
0x0000000000000000 bmdma 0x0000000000000000 irq 21
[ 30.479231] ata2: SATA max UDMA/133 cmd 0xffffc200005f8180 ctl
0x0000000000000000 bmdma 0x0000000000000000 irq 21
[ 30.479234] ata3: SATA max UDMA/133 cmd 0xffffc200005f8200 ctl
0x0000000000000000 bmdma 0x0000000000000000 irq 21
[ 30.479237] ata4: SATA max UDMA/133 cmd 0xffffc200005f8280 ctl
0x0000000000000000 bmdma 0x0000000000000000 irq 21
[ 30.479240] ata5: SATA max UDMA/133 cmd 0xffffc200005f8300 ctl
0x0000000000000000 bmdma 0x0000000000000000 irq 21
[ 30.479243] ata6: SATA max UDMA/133 cmd 0xffffc200005f8380 ctl
0x0000000000000000 bmdma 0x0000000000000000 irq 21
[ 30.670632] usb 7-1.1: new high speed USB device using ehci_hcd and
address 5
[ 30.746315] ieee1394: Host added: ID:BUS[0-00:1023]
GUID[0090270001eac2c3]
[ 30.764496] usb 7-1.1: configuration #1 chosen from 1 choice
[ 30.961793] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 30.962030] usb 7-1.2: new high speed USB device using ehci_hcd and
address 6
[ 30.999213] ata1.00: ATA-7: ST3160815AS, 3.AAD, max UDMA/133
[ 30.999216] ata1.00: 312581808 sectors, multi 16: LBA48 NCQ (depth
31/32)
[ 31.054773] usb 7-1.2: configuration #1 chosen from 1 choice
[ 31.055515] usbcore: registered new interface driver libusual
[ 31.057399] ata1.00: configured for UDMA/133
[ 31.059152] Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
[ 31.059155] ide: Assuming 33MHz system bus speed for PIO modes;
override with idebus=xx
[ 31.060168] Initializing USB Mass Storage driver...
[ 31.293123] usb 2-1: new low speed USB device using uhci_hcd and
address 2
[ 31.368971] ata2: SATA link down (SStatus 0 SControl 300)
[ 31.475149] usb 2-1: configuration #1 chosen from 1 choice
[ 31.680343] ata3: SATA link down (SStatus 0 SControl 300)
[ 31.716270] usb 2-2: new low speed USB device using uhci_hcd and
address 3
[ 31.898263] usb 2-2: configuration #1 chosen from 1 choice
[ 31.901635] scsi6 : SCSI emulation for USB Mass Storage devices
[ 31.901668] usb-storage: device found at 5
[ 31.901670] usb-storage: waiting for device to settle before scanning
[ 31.901694] scsi7 : SCSI emulation for USB Mass Storage devices
[ 31.901718] usb-storage: device found at 6
[ 31.901719] usb-storage: waiting for device to settle before scanning
[ 31.901734] usbcore: registered new interface driver usb-storage
[ 31.901736] usbcore: registered new interface driver hiddev
[ 31.901738] USB Mass Storage support registered.
[ 31.916372] input: Microsoft Microsoft 5-Button Mouse with
IntelliEye(TM) as /class/input/input1
[ 31.916388] input: USB HID v1.10 Mouse [Microsoft Microsoft 5-Button
Mouse with IntelliEye(TM)] on usb-0000:00:1a.1-1
[ 31.930335] input: Microsoft Natural� Ergonomic Keyboard 4000
as /class/input/input2
[ 31.930341] input: USB HID v1.11 Keyboard [Microsoft Natural�
Ergonomic Keyboard 4000] on usb-0000:00:1a.1-2
[ 31.951194] input: Microsoft Natural� Ergonomic Keyboard 4000
as /class/input/input3
[ 31.951199] input: USB HID v1.11 Device [Microsoft Natural� Ergonomic
Keyboard 4000] on usb-0000:00:1a.1-2
[ 31.951207] usbcore: registered new interface driver usbhid
[
31.951209] /build/buildd/linux-source-2.6.22-2.6.22/drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
[ 31.991722] ata4: SATA link down (SStatus 0 SControl 300)
[ 32.303093] ata5: SATA link down (SStatus 0 SControl 300)
[ 32.614466] ata6: SATA link down (SStatus 0 SControl 300)
[ 32.614550] scsi 0:0:0:0: Direct-Access ATA ST3160815AS
3.AA PQ: 0 ANSI: 5
[ 32.614825] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level,
low) -> IRQ 17
[ 32.614847] PCI: Setting latency timer of device 0000:03:00.0 to 64
[ 32.614870] scsi8 : pata_marvell
[ 32.614998] scsi9 : pata_marvell
[ 32.615114] ata7: PATA max UDMA/100 cmd 0x0000000000011018 ctl
0x0000000000011026 bmdma 0x0000000000011000 irq 17
[ 32.615116] ata8: DUMMY
[ 32.615866] BAR5:00:00 01:7F 02:22 03:CA 04:00 05:00 06:00 07:00
08:00 09:00 0A:00 0B:00 0C:01 0D:00 0E:00 0F:00
[ 32.622523] sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors
(160042 MB)
[ 32.622533] sd 0:0:0:0: [sda] Write Protect is off
[ 32.622535] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 32.622545] sd 0:0:0:0: [sda] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 32.622580] sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors
(160042 MB)
[ 32.622586] sd 0:0:0:0: [sda] Write Protect is off
[ 32.622588] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 32.622598] sd 0:0:0:0: [sda] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 32.622601] sda: sda1 sda2 < sda5 >
[ 32.666726] sd 0:0:0:0: [sda] Attached SCSI disk
[ 32.668697] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 32.861928] Attempting manual resume
[ 32.861931] swsusp: Resume From Partition 8:5
[ 32.861932] PM: Checking swsusp image.
[ 32.862067] PM: Resume from disk failed.
[ 32.898435] kjournald starting. Commit interval 5 seconds
[ 32.898444] EXT3-fs: mounted filesystem with ordered data mode.
[ 32.934174] ata7.00: ATAPI: TSSTcorpDVD-ROM SH-D162D, SB00, max
UDMA/33
[ 33.105820] ata7.00: configured for UDMA/33
[ 33.106844] scsi 8:0:0:0: CD-ROM TSSTcorp DVD-ROM SH-D162D
SB00 PQ: 0 ANSI: 5
[ 33.106894] scsi 8:0:0:0: Attached scsi generic sg1 type 5
[ 36.890025] usb-storage: device scan complete
[ 36.890101] usb-storage: device scan complete
[ 36.890525] scsi 7:0:0:0: Direct-Access WD 1200BEVExternal
1.02 PQ: 0 ANSI: 0
[ 36.890668] scsi 6:0:0:0: Direct-Access Generic USB SD Reader
1.00 PQ: 0 ANSI: 0
[ 36.891139] scsi 6:0:0:1: Direct-Access Generic USB CF Reader
1.01 PQ: 0 ANSI: 0
[ 36.891506] sd 7:0:0:0: [sdb] 234441648 512-byte hardware sectors
(120034 MB)
[ 36.891636] scsi 6:0:0:2: Direct-Access Generic USB SM Reader
1.02 PQ: 0 ANSI: 0
[ 36.892138] scsi 6:0:0:3: Direct-Access Generic USB MS Reader
1.03 PQ: 0 ANSI: 0
[ 36.892253] sd 7:0:0:0: [sdb] Write Protect is off
[ 36.892255] sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 36.892257] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[ 36.893125] sd 7:0:0:0: [sdb] 234441648 512-byte hardware sectors
(120034 MB)
[ 36.893746] sd 7:0:0:0: [sdb] Write Protect is off
[ 36.893748] sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 36.893749] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[ 36.893753] sdb:<6>pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 39.011940] shpchp: Standard Hot Plug PCI Controller Driver version:
0.4
[ 39.042055] input: PC Speaker as /class/input/input4
[ 39.146879] Intel(R) PRO/1000 Network Driver - version 7.6.5-NAPI
[ 39.146882] Copyright (c) 1999-2007 Intel Corporation.
[ 39.146920] ACPI: PCI Interrupt 0000:00:19.0[A] -> GSI 20 (level,
low) -> IRQ 20
[ 39.146930] PCI: Setting latency timer of device 0000:00:19.0 to 64
[ 39.193869] e1000: 0000:00:19.0: e1000_probe: (PCI
Express:2.5Gb/s:Width x1) 00:19:d1:7c:f2:69
[ 39.223347] heci: Intel(R) AMT Management Interface - version
3.1.0.31
[ 39.223350] heci: Copyright (c) 2003 - 2007 Intel Corporation.
[ 39.263051] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network
Connection
[ 39.263092] ACPI: PCI Interrupt 0000:00:03.0[A] -> GSI 16 (level,
low) -> IRQ 16
[ 39.263096] PCI: Setting latency timer of device 0000:00:03.0 to 64
[ 39.264034] heci: link layer has been established.
[ 39.285949] nvidia: module license 'NVIDIA' taints kernel.
[ 39.539111] heci: heci driver initialization successful.
[ 39.543742] ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 16 (level,
low) -> IRQ 16
[ 39.543750] PCI: Setting latency timer of device 0000:01:00.0 to 64
[ 39.543823] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 100.14.19
Wed Sep 12 14:08:38 PDT 2007
[ 39.554103] usbcore: registered new interface driver xpad
[
39.554106] /build/buildd/linux-source-2.6.22-2.6.22/drivers/input/joystick/xpad.c: driver for Xbox controllers v0.1.6
[ 39.745530] sr0: scsi3-mmc drive: 48x/48x cd/rw xa/form2 cdda tray
[ 39.745534] Uniform CD-ROM driver Revision: 3.20
[ 39.745699] sr 8:0:0:0: Attached scsi CD-ROM sr0
[ 39.959429] ACPI: PCI Interrupt 0000:00:1b.0[A] -> GSI 22 (level,
low) -> IRQ 22
[ 39.960191] PCI: Setting latency timer of device 0000:00:1b.0 to 64
[ 40.167253] hda_codec: Unknown model for ALC883, trying auto-probe
from BIOS...
[ 40.501814] sdb1
[ 40.501866] sd 7:0:0:0: [sdb] Attached SCSI disk
[ 40.501899] sd 7:0:0:0: Attached scsi generic sg2 type 0
[ 40.502634] sd 6:0:0:0: [sdc] Attached SCSI removable disk
[ 40.502657] sd 6:0:0:0: Attached scsi generic sg3 type 0
[ 40.503677] sd 6:0:0:1: [sdd] Attached SCSI removable disk
[ 40.503701] sd 6:0:0:1: Attached scsi generic sg4 type 0
[ 40.506604] sd 6:0:0:2: [sde] Attached SCSI removable disk
[ 40.506639] sd 6:0:0:2: Attached scsi generic sg5 type 0
[ 40.510621] sd 6:0:0:3: [sdf] Attached SCSI removable disk
[ 40.510649] sd 6:0:0:3: Attached scsi generic sg6 type 0
As you can see I'm running the NVida kernel module (needed for duel
screen), but I can test without it if needed. Finally the lsmod output:
root@...cairn:/home/ajb# lsmod
Module Size Used by
rfcomm 47656 2
l2cap 28672 11 rfcomm
bluetooth 63876 4 rfcomm,l2cap
ppdev 11272 0
button 10400 0
sbs 21520 0
ac 7304 0
video 21140 0
container 6400 0
dock 12264 0
battery 12424 0
acpi_cpufreq 10632 0
cpufreq_stats 8160 0
cpufreq_userspace 6048 0
cpufreq_ondemand 10896 2
freq_table 6464 3 acpi_cpufreq,cpufreq_stats,cpufreq_ondemand
cpufreq_conservative 9608 0
cpufreq_powersave 3072 0
ipv6 317192 20
nfs 272984 2
lockd 76336 2 nfs
sunrpc 198536 3 nfs,lockd
parport_pc 41896 0
lp 15048 0
parport 44172 3 ppdev,parport_pc,lp
loop 21764 0
snd_hda_intel 337192 4
snd_pcm_oss 50048 0
snd_mixer_oss 20096 1 snd_pcm_oss
snd_pcm 94344 3 snd_hda_intel,snd_pcm_oss
snd_seq_dummy 5380 0
snd_seq_oss 36864 0
sr_mod 19876 0
cdrom 41768 1 sr_mod
snd_seq_midi 11008 0
snd_rawmidi 29824 1 snd_seq_midi
snd_seq_midi_event 9984 2 snd_seq_oss,snd_seq_midi
snd_seq 62496 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer 27272 3 snd_pcm,snd_seq
xpad 11400 0
snd_seq_device 10260 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
nvidia 7013492 36
psmouse 45596 0
ata_generic 9988 0
i2c_core 30208 1 nvidia
heci 66064 0
serio_raw 9092 0
e1000_ich9 211008 0
snd 69288 15 snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore 10272 1 snd
snd_page_alloc 12560 2 snd_hda_intel,snd_pcm
pcspkr 4608 0
shpchp 38300 0
pci_hotplug 36612 1 shpchp
intel_agp 30624 0
joydev 13440 0
evdev 13056 4
ext3 146576 2
jbd 69360 1 ext3
mbcache 11272 1 ext3
sg 41384 0
sd_mod 32512 5
usbhid 32576 0
hid 33408 1 usbhid
usb_storage 81728 1
ide_core 141200 1 usb_storage
libusual 22824 1 usb_storage
ahci 27012 2
pata_marvell 9472 0
ohci1394 38984 0
ieee1394 109528 1 ohci1394
libata 138928 3 ata_generic,ahci,pata_marvell
scsi_mod 172856 5 sr_mod,sg,sd_mod,usb_storage,libata
ehci_hcd 40076 0
uhci_hcd 29600 0
usbcore 161584 7 xpad,usbhid,usb_storage,libusual,ehci_hcd,uhci_hcd
thermal 16528 0
processor 36232 2 acpi_cpufreq,thermal
fan 6920 0
fuse 52528 1
apparmor 47008 0
commoncap 9472 1 apparmor
Any pointers?
--
Alex, homepage: http://www.bennee.com/~alex/
Other restrictions may apply.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists