This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: ixp425 pci accesses crash in redboot


>I am using a IXP425 and a custom PCI target device,
>
>The device enumeration and configuration all go well in redboot, but
>sometimes (one in 200 reboots or so) I get a data abort exception that
>ends up in the GDB stubs when I try to read from the PCI device using
>PCI Memory Window transactions (reading/writing to/from
>(0x49000000+offset)). I I get past this stage, the unit will stay up
>forever happily serving PCI access. Only the reboots are dangerous.
>
>When this happens, I have used gdb to read the pci configuration
>parameters from the PCI target controller (0xC0000000 ->), and all is
>as it should be (except that the PCI fatal error flag is raised) .
>What I wonder is what can cause this behaviour, and how I should
>handle it. Can this be caused by my PCI device doing an abort, by some
>MMU/cache setting in the IXP425 or similar?

I don't have experience with the IXP425 in particular - only with other
IO processors of the same family.

Likely candidates are:
- your device doing a target abort.
- your code accessing a non-existing device - causing a master abort.
- your code accessing your device when it's not ready yet - also
resulting in a master abort.
- If your device can also act as a bus master ... some nasty things
might happen if it already acts as a bus master but your central chip
isn't set up for bus mastering (yet).

The data abort exception itself might also tell you a little more:
- If it's a precise abort the first 3 candidates are more likely.
- If it's an imprecise abort the last candidate might be more likely.

The PCI error registers might contain more detailed info.
The ultimate way to find out:  hook up a PCI Bus (or Logic) Analyzer and
see what causes the fatal PCI error.

If you have to deal with those fatal PCI errors:  setup your own
exception handler that tells your PCI initialization code such a beast
has occurred.  (That's what I did:  I have plug'n'play code.  And
candidate 2 shows up whenever a device is not present.)

MMU / cache settings I consider less likely.  If those are wrong I'd
expect you to see more trouble.

  Kurt


--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]