On our system (a P2010 or P1014 configured in RC mode), we will occasionally get a machine check exception during reboot tests of startup initialization.
The machine check is marked as being a BUS_RBERR, and occurs on an lwz instruction to PCIe IO space.
- PEX_CONFIG_ADDR = 0x8001_0000 (EP's PCIe vendor ID read)
- PEX_CONFIG_DATA = 0x4c10_8888
- PEX_ERR_DR = 0x8002_0000
- bit 0 - multiple errors (this seems to always be on regularly during "good" operation)
- bit 14 - Access to an illegal configuration space from PEX_CONFIG_ADDR
- PEX_ERR_CAP_STAT = 0x0000_0041
- bit 25 - transaction originated from PEX_CONFIG_ADDR/PEX_CONFIG_DATA
- bit 31 - error capture valid
What situations can cause the PCIe peripheral to generate this "Access to an illegal configuration space from PEX_CONFIG_ADDR"? Everything that we're doing seems valid and works 97% of the time. It's as if there is some sort of race condition that we're not aware of.