Re: [PATCH v4 00/14] Copy Offload in NVMe Fabrics with P2P PCI Memory

From: Christian KÃnig
Date: Thu May 03 2018 - 05:05:51 EST


Am 02.05.2018 um 17:56 schrieb Logan Gunthorpe:
Hi Christian,

On 5/2/2018 5:51 AM, Christian KÃnig wrote:
it would be rather nice to have if you could separate out the functions to detect if peer2peer is possible between two devices.

This would essentially be pci_p2pdma_distance() in the existing patchset. It returns the sum of the distance between a list of clients and a P2PDMA provider. It returns -1 if peer2peer is not possible between the devices (presently this means they are not behind the same root port).

Ok, I'm still missing the big picture here. First question is what is the P2PDMA provider?

Second question is how to you want to handle things when device are not behind the same root port (which is perfectly possible in the cases I deal with)?

Third question why multiple clients? That feels a bit like you are pushing something special to your use case into the common PCI subsystem. Something which usually isn't a good idea.



As far as I can see we need a function which return the distance between a initiator and target device. This function then returns -1 if the transaction can't be made and a positive value otherwise.

We also need to give the direction of the transaction and have a whitelist root complex PCI-IDs which can handle P2P transactions from different ports for a certain DMA direction.


Christian.


Logan