From: Test01 on
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
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
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
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.