MPC5200 IDE DMA and Machine checks due to TEA
Stephen Warren
SWarren at nvidia.com
Fri Mar 25 13:28:16 EST 2005
Does anyone have IDE DMA really working on the MPC5200. By this, I mean
working under load, with other peripherals on the PCI bus, using DMA
also for FEC and/or audio?
In the archive of this list, I've seen other posts on this subject (e.g.
back last June and earlier) and the status then was that people were
waiting on a new Bestcommm API (2.1?) to solve this. However, the
problem still seems to exist:
The reason I ask is that we keep on getting machine check exceptions
with DMA enabled.
We're using the MontaVista 3.1 kernel, with the Bestcomm API and IDE
driver from the latest Denx CVS tree.
I can't determine the cause of this crash, even by dumping a ton of
extra registers I don't see any clues, not even from running a PCI bus
analyzer. It seems like the CPU attempts to make a PCI access, but hits
TEA because something else is either locking the CPU out of the XLB, or
locking the PCI controller out of the external bus? We've made sure
external PCI peripherals aren't mastering the PCI bus. PCI analyzer
shows absolutely no sign of even an attempt at making this transaction
on the PCI bus (although I can't see the CPU's REQ#/GNT# pins with the
analyzer hookup I have)
One thing I do recall seeing is a note in (I think) the MPC5200
user-manual that ATA drivers should check a certain bit and wait for it
to be zero before initiating "new" transactions, or the XLB could hang.
Is this likely what's going on - is the ATA driver becoming confused and
issuing multiple transactions in parallel when it shouldn't? How on
earth would I check for this?
Does anyone have any clues, about the cause or how to procede debugging?
Thanks for any help!
Machine check in kernel mode.
Caused by (from SRR1=41030): Transfer error ack signal
MPC5200 XLB Arbitrator register dump:
Conf: 0000a066
Version 00000001
Status 00000103
Int Enable 00000000
Addr Capture 4f000140 <- this is an address in the PCI
peripheral
Bus Sig Capt 0000026a
Addr Ten T/O 0fffffff
Data Ten T/O 0fffffff
Activity T/O ffffffff
Mstr Prio En 000000ff
Mstr Prio 11111111
Base Addr 00001f00
Snoop Window 0000001d
PCI host register dump:
GSCR 02020000
TCR 00000000
ICR 000000ff
ISR 02000000
ARB 00000000
SCPCI TX register dump:
TPSR 00000000
TSAR 00000000
TTCR 07000000
TER 00000000
TNAR 00000000
TLWR 00000000
TDCR 00000000
TSR 00000000
TFSR 00030000
TFCR 04000000
TFAR 00000000
TFRPR 00000000
TFWPR 00000000
SCPCI RX register dump:
RPSR 00000000
RSAR 00000000
RTCR 0c000000
RER 00000000
RNAR 00000000
RDCR 00000000
RSR 00000000
RFSR 00010000
RFCR 04000000
RFAR 00000000
RFRPR 00000000
RFWPR 00000000
LPC register dump:
Csel Status 00000000
SCLPC register dump:
Enable 00000000
BytesDone Sts 00ffff3e
FIFO Status 00030000
ATA host register dump:
Config 03000000
Status 00000000
Share Count 01000000
FIFO Status 00010000
SDMA register dump:
IntVec PTDCtl 0f0f0001
Int Pending 00003020
Int Mask ffffcfd3
Debug Ctl 00000000
Debug Status 00000000
Module list:
snd-pcm-oss: c510304c
snd-mixer-oss: c50fbf48
snd-ac97mgt: c50ed530
snd-pcm: c50dbc0c
snd-timer: c50d783c
snd-page-alloc: c50d1f0c
snd: c50c68a8
NVMiniRM: c5081a5c
: 00000000
Oops: machine check, sig: 7
NIP: C508FCAC XER: 20000000 LR: C508FCA4 SP: C1C17B80 REGS: c1c17ad0
TRAP: 0200 Tainted: P
MSR: 00041030 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c1c16000[183] 'nStantMedia' Last syscall: 5
last math 00000000 last altivec 00000000
GPR00: C508DE8C C1C17B80 C1C16000 0390F581 00000140 C1C17C40 00000008
00000000
GPR08: F0001200 C50C3F8C F0000500 00000000 84004842 1064FB3C 00000000
103D0000
GPR16: 3D3C3958 00000000 3D3C3948 3D3C39C8 00001032 01C17C30 00000000
C0005B0C
GPR24: C01E0000 00000000 C3975FA0 C01E0860 C1C17BA8 C39756A0 C3933800
C1C17BC8
Call backtrace:
C508DE8C C508DDAC C5082BF4 C0007334 C00073F0 C0005B0C C17570E4
C002C338 C002ED84 C007B5CC C007B944 C007BAF8 C007F2D4 C0048888
C004903C C0049378 C0049870 C003B81C C003BBF0 C00058DC 0FD3CC94
0FD13CD4 1020604C 101D76A4 101D56E0 1020D19C 1020D0AC 1020E794
0FF94B8C 0FD4ADC8
--
Stephen Warren, Software Engineer, NVIDIA, Fort Collins, CO
swarren at nvidia.com http://www.nvidia.com/
swarren at wwwdotorg.org http://www.wwwdotorg.org/pgp.html
More information about the Linuxppc-embedded
mailing list