There are 4 messages in this thread.
You are currently looking at messages 0 to 4.
I am using Viertex5 hardip in pcie gen1 x4 configuration. The hard IP has PCI bar register configured for 512K memory space. The Root complex is sending out the memory read request to the V5 end point with valid address (that belongs to 512K memory block). The end point sends a request to the appropriate device behind it. But that device behind the end-point realistically only supports smaller chunk of that 512K memory block. Thus it does not respond with data to the cycle eventhough it belongs to its memory range. Is it OK to send out compelter abort TLP back to the root complex in such a situation? How to gracefully terminate such a cycle? Thanks.______________________________
In article <0...@a15g2000yqm.googlegroups.com>, Test01 <c...@yahoo.com> writes: >I am using Viertex5 hardip in pcie gen1 x4 configuration. The hard IP >has PCI bar register configured for 512K memory space. The Root >complex is sending out the memory read request to the V5 end point >with valid address (that belongs to 512K memory block). The end point >sends a request to the appropriate device behind it. But that device >behind the end-point realistically only supports smaller chunk of that >512K memory block. Thus it does not respond with data to the cycle >eventhough it belongs to its memory range. Is it OK to send out >compelter abort TLP back to the root complex in such a situation? How >to gracefully terminate such a cycle? If you "fix" your code to return something then you don't have to ask what the PCI stuff will do. 0 is sometimes convenient. Or you could use 0xdeadbeaf to make it conspicious. -- These are my opinions, not necessarily my employer's. I hate spam.
On Jan 11, 6:38=A0pm, hal-use...@ip-64-139-1-69.sjc.megapath.net (Hal Murray) wrote: > In article <05452d8a-9fe9-44d6-9395-1f4b6ae25...@a15g2000yqm.googlegroups= .com>, > > =A0Test01 <cpan...@yahoo.com> writes: > >I am using Viertex5 hardip in pcie gen1 x4 configuration. =A0The hard IP > >has PCI bar register configured for 512K memory space. =A0The Root > >complex is sending out the memory read request to the V5 end point > >with valid address (that belongs to 512K memory block). =A0The end point > >sends a request to the appropriate device behind it. =A0But that device > >behind the end-point realistically only supports smaller chunk of that > >512K memory block. =A0Thus it does not respond with data to the cycle > >eventhough it belongs to its memory range. =A0Is it OK to send out > >compelter abort TLP back to the root complex in such a situation? =A0How > >to gracefully terminate such a cycle? > > If you "fix" your code to return something then you > don't have to ask what the PCI stuff will do. > > 0 is sometimes convenient. =A0Or you could use 0xdeadbeaf to > make it conspicious. > > -- > These are my opinions, not necessarily my employer's. =A0I hate spam. Thanks for getting back to me so basically if the device behind the end-point does not respond to the cycle then I can simply have a code that does normal PCIe completion cycle with data as ffff_ffff to match the data size. Can I not issue completer abort or some other abort mechanism in such a case? This particular case is not within my control as the device resides behind the FPGA (PCIe endpoint).
In article <5...@q4g2000yqm.googlegroups.com>, Test01 <c...@yahoo.com> writes: >Thanks for getting back to me so basically if the device behind the >end-point does not respond to the cycle then I can simply have a code >that does normal PCIe completion cycle with data as ffff_ffff to match >the data size. Can I not issue completer abort or some other abort >mechanism in such a case? This particular case is not within my >control as the device resides behind the FPGA (PCIe endpoint). You CAN try an abort, but then you have to test and debug another case. What do you mean by "not within my control"? If you know something is broken enough to issue an abort, then you know you could supply dummy data. All I was trying to say is that aborts in the middle of things like cache-read-block seem like asking for troubles. Why go there? Just give it some dummy data instead. -- These are my opinions, not necessarily my employer's. I hate spam.