Re: [PATCH v7 4/5] PCI: add PCI controller for keystone PCIe h/w

From: Murali Karicheri
Date: Wed Aug 06 2014 - 10:39:40 EST


On 07/30/2014 04:05 PM, Jason Gunthorpe wrote:
On Wed, Jul 30, 2014 at 03:34:44PM -0400, Murali Karicheri wrote:

â Maximum remote read request size of 256 bytes

The PCI spec simply does not permit a completer to impose this
limitation.

See spec 2.3.1.1

It is not an option to error a read request because it is too
long. All requests must be completed. All completions must be segmented
according to the RCB and Max_Payload_Size.

completion packets. So it seems to be able to segment up to maximum
256 bytes of read request. Where do I find the requirement in PCI
spec that "read response segmentation at the host bridge does not
work" ?

You just said it. Segmenting up to only 256 bytes is not a limitation
the completer can impose. Such a device is non-conformant.

So, the only fix is that every downstream device must always have a
MRSS set to less than the MPS of the host bridge.

Why this can't be the default behavior in the PCI core? Any cons?

It increases read request traffic and read response latency on the bus
for large transfers.

The MRSS is intented as a performance tuning knob, it is not something
that ever needs to be set properly for correct bus operation.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Jason, Bjorn,

It appears that Keystone PCI has a hardware limitation that can't
handle read request size of greater than 256 bytes and a quirk is the
way to handle this hardware limitation. I will be sending a patch to
address this

Murali

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/