From: Test01 on 11 Jan 2010 14:44 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.
From: Hal Murray on 11 Jan 2010 19:38 In article <05452d8a-9fe9-44d6-9395-1f4b6ae25806(a)a15g2000yqm.googlegroups.com>, Test01 <cpandya(a)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.
From: Test01 on 12 Jan 2010 09:41 On Jan 11, 6:38 pm, hal-use...(a)ip-64-139-1-69.sjc.megapath.net (Hal Murray) wrote: > In article <05452d8a-9fe9-44d6-9395-1f4b6ae25...(a)a15g2000yqm.googlegroups..com>, > > Test01 <cpan...(a)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. 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).
From: Hal Murray on 13 Jan 2010 02:20 In article <57bd01b2-0d7c-48dd-a925-521eb206fef2(a)q4g2000yqm.googlegroups.com>, Test01 <cpandya(a)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.
|
Pages: 1 Prev: E1 clock problem... Next: Timing errors in Post route simulation in modelsim |