All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Logan Gunthorpe <logang@deltatee.com>
Cc: "Jens Axboe" <axboe@kernel.dk>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	linux-nvdimm@lists.01.org, linux-rdma@vger.kernel.org,
	linux-pci@vger.kernel.org, "Jonathan Corbet" <corbet@lwn.net>,
	linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
	linux-block@vger.kernel.org, "Jérôme Glisse" <jglisse@redhat.com>,
	"Jason Gunthorpe" <jgg@mellanox.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Max Gurtovoy" <maxg@mellanox.com>,
	"Christoph Hellwig" <hch@lst.de>
Subject: Re: [PATCH v6 06/13] PCI/P2PDMA: Add P2P DMA driver writer's documentation
Date: Fri, 21 Sep 2018 11:41:26 -0500	[thread overview]
Message-ID: <20180921164126.GI224714@bhelgaas-glaptop.roam.corp.google.com> (raw)
In-Reply-To: <20180913001156.4115-7-logang@deltatee.com>

On Wed, Sep 12, 2018 at 06:11:49PM -0600, Logan Gunthorpe wrote:
> Add a restructured text file describing how to write drivers
> with support for P2P DMA transactions. The document describes
> how to use the APIs that were added in the previous few
> commits.
> 
> Also adds an index for the PCI documentation tree even though this
> is the only PCI document that has been converted to restructured text
> at this time.
> 
> Signed-off-by: Logan Gunthorpe <logang@deltatee.com>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

> +With the client list in hand, the orchestrator may then call
> +:c:func:`pci_p2pmem_find()` to obtain a published P2P memory provider
> +that is supported (behind the same root port) as all the clients. If more
> +than one provider is supported, the one nearest to all the clients will
> +be chosen first. If there are more than one provider is an equal distance

s/If there are more/If more/

> +away, the one returned will be chosen at random. This function returns the PCI

s/the one returned will be chosen at random/one will be chosen
arbitrarily/ ?  (I doubt it's really random)

> +device to use for the provider with a reference taken and therefore
> +when it's no longer needed it should be returned with pci_dev_put().

> +Struct Page Caveats
> +-------------------
> +
> +Driver writers should be very careful about not passing these special
> +struct pages to code that isn't prepared for it. At this time, the kernel
> +interfaces do not have any checks for ensuring this. This obviously
> +precludes passing these pages to userspace.

Sounds like landmines here since the reader probably can't translate
"code that isn't prepared for it" into a list of interfaces that are
off-limits.  But that's a VM issue that is above my pay grade, so I'm
not suggesting any change; just pointing out something that makes me
wonder "hmmm..., how would I act on this?"

> +P2P memory is also technically IO memory but should never have any side
> +effects behind it. Thus, the order of loads and stores should not be important
> +and ioreadX(), iowriteX() and friends should not be necessary.
> +However, as the memory is not cache coherent, if access ever needs to
> +be protected by a spinlock then :c:func:`mmiowb()` must be used before
> +unlocking the lock. (See ACQUIRES VS I/O ACCESSES in
> +Documentation/memory-barriers.txt)
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Logan Gunthorpe <logang@deltatee.com>
Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org,
	linux-nvdimm@lists.01.org, linux-block@vger.kernel.org,
	"Stephen Bates" <sbates@raithlin.com>,
	"Christoph Hellwig" <hch@lst.de>,
	"Keith Busch" <keith.busch@intel.com>,
	"Sagi Grimberg" <sagi@grimberg.me>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Jason Gunthorpe" <jgg@mellanox.com>,
	"Max Gurtovoy" <maxg@mellanox.com>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Jonathan Corbet" <corbet@lwn.net>
Subject: Re: [PATCH v6 06/13] PCI/P2PDMA: Add P2P DMA driver writer's documentation
Date: Fri, 21 Sep 2018 11:41:26 -0500	[thread overview]
Message-ID: <20180921164126.GI224714@bhelgaas-glaptop.roam.corp.google.com> (raw)
In-Reply-To: <20180913001156.4115-7-logang@deltatee.com>

On Wed, Sep 12, 2018 at 06:11:49PM -0600, Logan Gunthorpe wrote:
> Add a restructured text file describing how to write drivers
> with support for P2P DMA transactions. The document describes
> how to use the APIs that were added in the previous few
> commits.
> 
> Also adds an index for the PCI documentation tree even though this
> is the only PCI document that has been converted to restructured text
> at this time.
> 
> Signed-off-by: Logan Gunthorpe <logang@deltatee.com>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

> +With the client list in hand, the orchestrator may then call
> +:c:func:`pci_p2pmem_find()` to obtain a published P2P memory provider
> +that is supported (behind the same root port) as all the clients. If more
> +than one provider is supported, the one nearest to all the clients will
> +be chosen first. If there are more than one provider is an equal distance

s/If there are more/If more/

> +away, the one returned will be chosen at random. This function returns the PCI

s/the one returned will be chosen at random/one will be chosen
arbitrarily/ ?  (I doubt it's really random)

> +device to use for the provider with a reference taken and therefore
> +when it's no longer needed it should be returned with pci_dev_put().

> +Struct Page Caveats
> +-------------------
> +
> +Driver writers should be very careful about not passing these special
> +struct pages to code that isn't prepared for it. At this time, the kernel
> +interfaces do not have any checks for ensuring this. This obviously
> +precludes passing these pages to userspace.

Sounds like landmines here since the reader probably can't translate
"code that isn't prepared for it" into a list of interfaces that are
off-limits.  But that's a VM issue that is above my pay grade, so I'm
not suggesting any change; just pointing out something that makes me
wonder "hmmm..., how would I act on this?"

> +P2P memory is also technically IO memory but should never have any side
> +effects behind it. Thus, the order of loads and stores should not be important
> +and ioreadX(), iowriteX() and friends should not be necessary.
> +However, as the memory is not cache coherent, if access ever needs to
> +be protected by a spinlock then :c:func:`mmiowb()` must be used before
> +unlocking the lock. (See ACQUIRES VS I/O ACCESSES in
> +Documentation/memory-barriers.txt)

WARNING: multiple messages have this Message-ID (diff)
From: helgaas@kernel.org (Bjorn Helgaas)
Subject: [PATCH v6 06/13] PCI/P2PDMA: Add P2P DMA driver writer's documentation
Date: Fri, 21 Sep 2018 11:41:26 -0500	[thread overview]
Message-ID: <20180921164126.GI224714@bhelgaas-glaptop.roam.corp.google.com> (raw)
In-Reply-To: <20180913001156.4115-7-logang@deltatee.com>

On Wed, Sep 12, 2018@06:11:49PM -0600, Logan Gunthorpe wrote:
> Add a restructured text file describing how to write drivers
> with support for P2P DMA transactions. The document describes
> how to use the APIs that were added in the previous few
> commits.
> 
> Also adds an index for the PCI documentation tree even though this
> is the only PCI document that has been converted to restructured text
> at this time.
> 
> Signed-off-by: Logan Gunthorpe <logang at deltatee.com>

Acked-by: Bjorn Helgaas <bhelgaas at google.com>

> +With the client list in hand, the orchestrator may then call
> +:c:func:`pci_p2pmem_find()` to obtain a published P2P memory provider
> +that is supported (behind the same root port) as all the clients. If more
> +than one provider is supported, the one nearest to all the clients will
> +be chosen first. If there are more than one provider is an equal distance

s/If there are more/If more/

> +away, the one returned will be chosen at random. This function returns the PCI

s/the one returned will be chosen at random/one will be chosen
arbitrarily/ ?  (I doubt it's really random)

> +device to use for the provider with a reference taken and therefore
> +when it's no longer needed it should be returned with pci_dev_put().

> +Struct Page Caveats
> +-------------------
> +
> +Driver writers should be very careful about not passing these special
> +struct pages to code that isn't prepared for it. At this time, the kernel
> +interfaces do not have any checks for ensuring this. This obviously
> +precludes passing these pages to userspace.

Sounds like landmines here since the reader probably can't translate
"code that isn't prepared for it" into a list of interfaces that are
off-limits.  But that's a VM issue that is above my pay grade, so I'm
not suggesting any change; just pointing out something that makes me
wonder "hmmm..., how would I act on this?"

> +P2P memory is also technically IO memory but should never have any side
> +effects behind it. Thus, the order of loads and stores should not be important
> +and ioreadX(), iowriteX() and friends should not be necessary.
> +However, as the memory is not cache coherent, if access ever needs to
> +be protected by a spinlock then :c:func:`mmiowb()` must be used before
> +unlocking the lock. (See ACQUIRES VS I/O ACCESSES in
> +Documentation/memory-barriers.txt)

  reply	other threads:[~2018-09-21 16:41 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-13  0:11 [PATCH v6 00/13] Copy Offload in NVMe Fabrics with P2P PCI Memory Logan Gunthorpe
2018-09-13  0:11 ` Logan Gunthorpe
2018-09-13  0:11 ` Logan Gunthorpe
2018-09-13  0:11 ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 01/13] PCI/P2PDMA: Support peer-to-peer memory Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-20 22:38   ` Bjorn Helgaas
2018-09-20 22:38     ` Bjorn Helgaas
2018-09-20 22:38     ` Bjorn Helgaas
2018-09-20 22:47     ` Logan Gunthorpe
2018-09-20 22:47       ` Logan Gunthorpe
2018-09-20 22:47       ` Logan Gunthorpe
2018-09-20 22:47       ` Logan Gunthorpe
2018-09-21 13:00       ` Bjorn Helgaas
2018-09-21 13:00         ` Bjorn Helgaas
2018-09-21 13:00         ` Bjorn Helgaas
2018-09-21 13:00         ` Bjorn Helgaas
2018-09-21 15:37         ` Logan Gunthorpe
2018-09-21 15:37           ` Logan Gunthorpe
2018-09-21 15:37           ` Logan Gunthorpe
2018-09-21 15:37           ` Logan Gunthorpe
2018-09-21 16:05           ` Christoph Hellwig
2018-09-21 16:05             ` Christoph Hellwig
2018-09-21 16:05             ` Christoph Hellwig
2018-09-21 16:05             ` Christoph Hellwig
2018-09-13  0:11 ` [PATCH v6 02/13] PCI/P2PDMA: Add sysfs group to display p2pmem stats Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-21 13:07   ` Bjorn Helgaas
2018-09-21 13:07     ` Bjorn Helgaas
2018-09-21 13:07     ` Bjorn Helgaas
2018-09-21 13:07     ` Bjorn Helgaas
2018-09-13  0:11 ` [PATCH v6 03/13] PCI/P2PDMA: Add PCI p2pmem DMA mappings to adjust the bus offset Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-21 13:15   ` Bjorn Helgaas
2018-09-21 13:15     ` Bjorn Helgaas
2018-09-21 13:15     ` Bjorn Helgaas
2018-09-21 13:15     ` Bjorn Helgaas
2018-09-21 16:48     ` Bjorn Helgaas
2018-09-21 16:48       ` Bjorn Helgaas
2018-09-21 16:48       ` Bjorn Helgaas
2018-09-21 16:48       ` Bjorn Helgaas
2018-09-21 18:13       ` Logan Gunthorpe
2018-09-21 18:13         ` Logan Gunthorpe
2018-09-21 18:13         ` Logan Gunthorpe
2018-09-21 18:13         ` Logan Gunthorpe
2018-09-21 20:00         ` Bjorn Helgaas
2018-09-21 20:00           ` Bjorn Helgaas
2018-09-21 20:00           ` Bjorn Helgaas
2018-09-21 20:00           ` Bjorn Helgaas
2018-09-21 20:01           ` Logan Gunthorpe
2018-09-21 20:01             ` Logan Gunthorpe
2018-09-21 20:01             ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 04/13] PCI/P2PDMA: Introduce configfs/sysfs enable attribute helpers Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-21 16:18   ` Bjorn Helgaas
2018-09-21 16:18     ` Bjorn Helgaas
2018-09-21 16:18     ` Bjorn Helgaas
2018-09-21 16:18     ` Bjorn Helgaas
2018-09-21 19:44     ` Logan Gunthorpe
2018-09-21 19:44       ` Logan Gunthorpe
2018-09-21 19:44       ` Logan Gunthorpe
2018-09-21 19:44       ` Logan Gunthorpe
2018-09-21 21:12     ` Logan Gunthorpe
2018-09-21 21:12       ` Logan Gunthorpe
2018-09-21 21:12       ` Logan Gunthorpe
2018-09-21 21:12       ` Logan Gunthorpe
2018-09-24 22:39   ` Bjorn Helgaas
2018-09-24 22:39     ` Bjorn Helgaas
2018-09-24 22:39     ` Bjorn Helgaas
2018-09-24 22:39     ` Bjorn Helgaas
2018-09-13  0:11 ` [PATCH v6 05/13] docs-rst: Add a new directory for PCI documentation Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 06/13] PCI/P2PDMA: Add P2P DMA driver writer's documentation Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-21 16:41   ` Bjorn Helgaas [this message]
2018-09-21 16:41     ` Bjorn Helgaas
2018-09-21 16:41     ` Bjorn Helgaas
2018-09-21 18:03     ` Logan Gunthorpe
2018-09-21 18:03       ` Logan Gunthorpe
2018-09-21 18:03       ` Logan Gunthorpe
2018-09-21 19:47       ` Bjorn Helgaas
2018-09-21 19:47         ` Bjorn Helgaas
2018-09-21 19:47         ` Bjorn Helgaas
2018-09-21 19:47         ` Bjorn Helgaas
2018-09-13  0:11 ` [PATCH v6 07/13] block: Add PCI P2P flag for request queue and check support for requests Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:28   ` Jens Axboe
2018-09-13  0:28     ` Jens Axboe
2018-09-13  0:28     ` Jens Axboe
2018-09-13  0:28     ` Jens Axboe
2018-09-13 16:14     ` Logan Gunthorpe
2018-09-13 16:14       ` Logan Gunthorpe
2018-09-13 16:14       ` Logan Gunthorpe
2018-09-13 16:14       ` Logan Gunthorpe
2018-09-13 16:14       ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 08/13] IB/core: Ensure we map P2P memory correctly in rdma_rw_ctx_[init|destroy]() Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 09/13] nvme-pci: Use PCI p2pmem subsystem to manage the CMB Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 10/13] nvme-pci: Add support for P2P memory in requests Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 11/13] nvme-pci: Add a quirk for a pseudo CMB Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 12/13] nvmet: Introduce helper functions to allocate and free request SGLs Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11 ` [PATCH v6 13/13] nvmet: Optionally use PCI P2P memory Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe
2018-09-13  0:11   ` Logan Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180921164126.GI224714@bhelgaas-glaptop.roam.corp.google.com \
    --to=helgaas@kernel.org \
    --cc=alex.williamson@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=christian.koenig@amd.com \
    --cc=corbet@lwn.net \
    --cc=hch@lst.de \
    --cc=jgg@mellanox.com \
    --cc=jglisse@redhat.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=logang@deltatee.com \
    --cc=maxg@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.