AR# 29236: Endpoint Block Plus Wrapper for PCI Express - How should the user application respond to requests targeting Expansion ROM? System hangs during Boot process
Endpoint Block Plus Wrapper for PCI Express - How should the user application respond to requests targeting Expansion ROM? System hangs during Boot process
The Block Plus Wrapper implements a 1 MB Expansion ROM by default. The user cannot disable this Expansion ROM.
How should the user application respond to system read requests when not using the Expansion ROM?
How should accesses to this Expansion ROM be addressed by the back end user application?
By default, the Xilinx Endpoint Block Plus for PCI Express v1.9.1 solution implements a 1 MB Expansion ROM BAR. During enumeration, System software often sends memory read requests down to the endpoint targeting this BAR. These requests must be completed by the user application. If a completion is not generated, system software might lock up or produce an error in the console. Below is an example of one common error that is reported by the BIOS:
"I/O card parity interrupt at XXXX Type (S)hut off NMI, (R)eboot, other keys to continue"
The recommended way to handle Expansion ROM accesses is described in the core's User Guide (UG341) on page 43:
"Accesses to the Expansion ROM BAR are indicated by trn_rbar_hit assertion. Xilinx recommends that users return a Completion with Data of all zeroes if the Expansion ROM is not in use. Xilinx has found that some system BIOSs will probe the Expansion ROM BAR during boot. Not returning a completion results in a completion timeout on the requesting device, which may lead to a system hang."
09/07/2007 - Initial Release. 01/12/2009 - Updated for v1.9.1 core.