I am trying to understand the rules for multiple CorePACs to share SRIO LSUs.
SPRUGW1 (section 2.3.2, page 2-20 in SPRUGW1B) is clear that any LSU that is programmed by EDMA must be programmed only by a single EDMA channel, and cannot be simultaneously used by any other core or EDMA channel.
A post by tscheck (on 2011-10-4, subject "C6678 SRIO User's Guide") explains that software is responsible for ensuring that each SRCID is used by at most one core, and also that LSU1_ICSR should only be used for EDMA, while LSU0_ICSR should be used for Direct I/O by software.
SPRUGW1 section 2.3.2.5.3 discusses error handling using LSU0_ICSR. It suggests suppressing good interrupts (LSU_REG4.SUP_GINT=1) to reduce CPU loading, and using LSU_STAT_REGn to determine which LSU and LTID failed (and determine the LCB and completion code for that transaction).
In the example discussed in section 2.3.2.5.3, CorePAC0 and CorePAC1 are using LSU0, which is configured to have 4 shadow register sets. Each CorePAC has a list of eight transactions it sent to LSU0 (the last one for each of LTID=0..3 x LCB=0..1). Further suppose that CorePAC0 also uses LSU1. Is it allowed to use the same SRCID with both LSU0 and LSU1?
Suppose it is, and that LSU0 and LSU1 both report errors at some point -- for example, due to flow control (Xoff). CorePAC0 reads LSU_STAT_REG0 to find out which transaction failed on LSU0; suppose it is LTID=x, LCB=y. If SUP_GINT=1, is there a way for CorePAC0 to tell whether that was its last transaction with LTID=x and LCB=y, rather than a transaction programmed by CorePAC1? Or must the software choose to either use SUP_GINT=0 or limit itself to only one LSU per SRCID? (In the latter case, reading LSU0_ICSR indicates which SRCID failed, which would indicate which LSU has the relevant failure. That would be an unfortunate restriction on usage, especially with the recommendation to only use one priority per LSU: Then each SRCID is only usable by a single core, for a single priority, with a single LSU, and one could easily use up all 16 SRCIDs.)