PowerPC MPC5200B ATA MWDMA regression
Roman Fietze
roman.fietze at telemotive.de
Tue Jan 4 00:45:47 EST 2011
Hello,
When merging more recent kernel versions, tried that using v2.6.35 and
v2.6.36, into our tree (branched at v2.6.34), I detected, that MWDMA2
on the HW listed in the subject does no longer work.
So I bisected that using the original, standard kernel tree using a
minimum config using
git bisect start v2.6.35 v2.6.34
The final result is:
360ff7833098e944e5003618b03894251e937802 is the first bad commit
commit 360ff7833098e944e5003618b03894251e937802
Author: Tejun Heo <tj at kernel.org>
Date: Mon May 10 21:41:42 2010 +0200
libata-sff: separate out BMDMA qc_issue
...
I double checked the failure with the latest torvalds/master as well
(b518a64983cbf2ff31), still the same issue.
The HW is an own board very close to the original Freescale
Lite5200/Lite5200B. The relevant part of the device tree source file
contains "mwdma-mode = <2>;" inside the ata section.
In the bad case the log always shows (the exact drive or drive type
doesn't matter, double checked):
[ 1.553501] ata1.00: ATA-5: HEJ423020F9AT00, 00MJA0A0, max UDMA/100
[ 1.560003] ata1.00: 39070080 sectors, multi 0: LBA
[ 1.581418] ata1.00: configured for MWDMA2
[ 1.586644] scsi 0:0:0:0: Direct-Access ATA HEJ423020F9AT00 00MJ PQ: 0 ANSI: 5
[ 1.597831] sd 0:0:0:0: [sda] 39070080 512-byte logical blocks: (20.0 GB/18.6 GiB)
[ 1.606876] sd 0:0:0:0: [sda] Write Protect is off
[ 1.611907] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 1.617627] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1.629423] sda:
[ 1.631702] ------------[ cut here ]------------
[ 1.636613] Badness at /home/fietze/src/linux-2.6-telemotive/drivers/ata/libata-sff.c:1466
[ 1.645047] NIP: c01ae650 LR: c01ae624 CTR: c01accbc
[ 1.650115] REGS: c7955b30 TRAP: 0700 Not tainted (2.6.34-rc7-obelix)
[ 1.656948] MSR: 00021032 <ME,CE,IR,DR> CR: 24008084 XER: 00000000
[ 1.663452] TASK = c78f2490[784] 'async/0' THREAD: c7954000
[ 1.668957] GPR00: 00000001 c7955be0 c78f2490 00000050 c904aa78 00000001 00000000 00000000
[ 1.677497] GPR08: 00000000 c034ee50 00000000 00000000 44008082 1001a7f0 c7955f68 07fb2938
[ 1.686037] GPR16: c78a8000 07fb2914 07f3f64c c0340000 c031ed00 c78a8000 00000000 c0010adc
[ 1.694577] GPR24: c7842820 00000002 c7949428 c7948000 00000003 00000000 c7948000 c794809c
[ 1.703321] NIP [c01ae650] ata_sff_qc_issue+0x74/0x248
[ 1.708564] LR [c01ae624] ata_sff_qc_issue+0x48/0x248
[ 1.713712] Call Trace:
[ 1.716211] [c7955be0] [c01ae624] ata_sff_qc_issue+0x48/0x248 (unreliable)
[ 1.723243] [c7955c00] [c019dd10] ata_qc_issue+0x1ac/0x31c
[ 1.728850] [c7955c30] [c01a3540] ata_scsi_translate+0x104/0x1b0
[ 1.734987] [c7955c50] [c018a8e0] scsi_dispatch_cmd+0xf4/0x208
[ 1.740952] [c7955c70] [c01912bc] scsi_request_fn+0x268/0x404
[ 1.746827] [c7955ca0] [c013bc84] __generic_unplug_device+0x48/0x5c
[ 1.753227] [c7955cb0] [c013c518] generic_unplug_device+0x28/0x44
[ 1.759449] [c7955cc0] [c0139c08] blk_unplug+0x20/0x30
[ 1.764697] [c7955cd0] [c00ad148] block_sync_page+0x50/0x6c
[ 1.770403] [c7955ce0] [c005a6b8] sync_page+0x4c/0x70
[ 1.775577] [c7955cf0] [c0252f24] __wait_on_bit_lock+0x94/0x124
[ 1.781623] [c7955d10] [c005a638] __lock_page+0x50/0x60
[ 1.786961] [c7955d40] [c005addc] do_read_cache_page+0x18c/0x190
[ 1.793093] [c7955d70] [c005ae38] read_cache_page+0x14/0x28
[ 1.798793] [c7955d80] [c00d2a44] read_dev_sector+0x40/0xb0
[ 1.804488] [c7955da0] [c00d36fc] msdos_partition+0x58/0x888
[ 1.810270] [c7955e20] [c00d33e8] rescan_partitions+0x18c/0x430
[ 1.816326] [c7955e80] [c00b51d8] __blkdev_get+0x1a0/0x368
[ 1.821929] [c7955ec0] [c00d31ec] register_disk+0x140/0x158
[ 1.827620] [c7955ef0] [c0143024] add_disk+0xe4/0x144
[ 1.832784] [c7955f20] [c0198aa8] sd_probe_async+0xd4/0x1d8
[ 1.838478] [c7955f40] [c00429f4] async_thread+0x120/0x2a8
[ 1.844079] [c7955fc0] [c003af90] kthread+0x78/0x7c
[ 1.849076] [c7955ff0] [c0010fd4] kernel_thread+0x4c/0x68
[ 1.854581] Instruction dump:
[ 1.857606] 4bffe96d 8b9f0014 2f9c0002 419e00e8 2b9c0002 419d0040 2f9c0001 419e0158
[ 1.865525] 3d20c035 3929ee50 89690006 69600001 <0f000000> 2f8b0000 38600040 419e01bc
[ 1.873859] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 1.880541] ata1.00: failed command: READ DMA
[ 1.885101] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
[ 1.885116] res 50/00:00:7f:29:54/00:00:00:00:00/a0 Emask 0x40 (internal error)
[ 1.900812] ata1.00: status: { DRDY }
[ 1.921430] ata1.00: configured for MWDMA2
[ 1.925775] ata1: EH complete
[ 1.929052] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 1.935739] ata1.00: failed command: READ DMA
[ 1.940301] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
[ 1.940316] res 50/00:00:7f:29:54/00:00:00:00:00/a0 Emask 0x40 (internal error)
[ 1.956013] ata1.00: status: { DRDY }
[ 1.981416] ata1.00: configured for MWDMA2
[ 1.985755] ata1: EH complete
[ 1.989027] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 1.995707] ata1.00: failed command: READ DMA
[ 2.000262] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
[ 2.000275] res 50/00:00:7f:29:54/00:00:00:00:00/a0 Emask 0x40 (internal error)
[ 2.015971] ata1.00: status: { DRDY }
[ 2.041420] ata1.00: configured for MWDMA2
[ 2.045767] ata1: EH complete
[ 2.049044] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 2.055730] ata1.00: failed command: READ DMA
[ 2.060287] ata1.00: cmd c8/00:08:00:00:00/00:00:00:00:00/e0 tag 0 dma 4096 in
[ 2.060301] res 50/00:00:7f:29:54/00:00:00:00:00/a0 Emask 0x40 (internal error)
[ 2.075997] ata1.00: status: { DRDY }
...
and then while operating the drive e.g. using dd if=/dev/sda ...:
[ 81.936231] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 81.942966] ata1.00: failed command: READ DMA
[ 81.947534] ata1.00: cmd c8/00:00:00:00:00/00:00:00:00:00/e0 tag 0 dma 131072 in
[ 81.947550] res 50/00:00:7f:29:54/00:00:00:00:00/a0 Emask 0x40 (internal error)
[ 81.963422] ata1.00: status: { DRDY }
[ 81.983316] ata1.00: configured for MWDMA2
[ 81.987690] ata1: EH complete
[ 81.990974] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 81.997661] ata1.00: failed command: READ DMA
[ 82.002219] ata1.00: cmd c8/00:00:00:00:00/00:00:00:00:00/e0 tag 0 dma 131072 in
[ 82.002234] res 50/00:00:7f:29:54/00:00:00:00:00/a0 Emask 0x40 (internal error)
[ 82.018186] ata1.00: status: { DRDY }
[ 82.047323] ata1.00: configured for MWDMA2
[ 82.051695] ata1: EH complete
...
and so on.
If I would understand more of IDE/ATA/libata I would have tried own
fixes, so I'm sorry to bother you with test results instead of
patches.
Roman
--
Roman Fietze Telemotive AG Buero Muehlhausen
Breitwiesen 73347 Muehlhausen
Tel.: +49(0)7335/18493-45 http://www.telemotive.de
More information about the Linuxppc-dev
mailing list