From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
nsekhar@ti.com, Robin Murphy <robin.murphy@arm.com>,
Rob Herring <robh@kernel.org>, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v3] PCI: endpoint: Use EPC's device in dma_alloc_coherent/dma_free_coherent
Date: Fri, 12 Jan 2018 18:08:38 +0000 [thread overview]
Message-ID: <20180112180838.GD26438@red-moon> (raw)
In-Reply-To: <20180111083057.1134-1-kishon@ti.com>
On Thu, Jan 11, 2018 at 02:00:57PM +0530, Kishon Vijay Abraham I wrote:
> After commit 723288836628bc1c08 ("of: restrict DMA configuration"),
> of_dma_configure doesn't configure the coherent_dma_mask/dma_mask
> of endpoint function device (since it doesn't have a dt node associated
> with and hence no dma-ranges property), resulting in dma_alloc_coherent
> (used in pci_epf_alloc_space) to fail.
>
> Fix it by making dma_alloc_coherent use EPC's device for allocating
> memory address.
>
> Link: http://lkml.kernel.org/r/64d63468-d28f-8fcd-a6f3-cf2a6401c8cb@ti.com
> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
> Cc: Robin Murphy <robin.murphy@arm.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Tested-by: Cyrille Pitchen <cyrille.pitchen@free-electrons.com>
> Tested-by: Niklas Cassel <niklas.cassel@axis.com>
> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
> ---
> Changes from v2:
> No change in patch. Added "Link", "Reviewed-by" and "Tested-by" tags
>
> Changes from v1:
> No change in patch. Only added "Tested-by" of Cyrille Pitchen.
>
> drivers/pci/endpoint/pci-epc-core.c | 10 ----------
> drivers/pci/endpoint/pci-epf-core.c | 4 ++--
> 2 files changed, 2 insertions(+), 12 deletions(-)
Applied to pci/endpoint for v4.16, thanks.
Lorenzo
> diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c
> index 42c2a1156325..cd7d4788b94d 100644
> --- a/drivers/pci/endpoint/pci-epc-core.c
> +++ b/drivers/pci/endpoint/pci-epc-core.c
> @@ -18,7 +18,6 @@
> */
>
> #include <linux/device.h>
> -#include <linux/dma-mapping.h>
> #include <linux/slab.h>
> #include <linux/module.h>
> #include <linux/of_device.h>
> @@ -371,7 +370,6 @@ EXPORT_SYMBOL_GPL(pci_epc_write_header);
> int pci_epc_add_epf(struct pci_epc *epc, struct pci_epf *epf)
> {
> unsigned long flags;
> - struct device *dev = epc->dev.parent;
>
> if (epf->epc)
> return -EBUSY;
> @@ -383,12 +381,6 @@ int pci_epc_add_epf(struct pci_epc *epc, struct pci_epf *epf)
> return -EINVAL;
>
> epf->epc = epc;
> - if (dev->of_node) {
> - of_dma_configure(&epf->dev, dev->of_node);
> - } else {
> - dma_set_coherent_mask(&epf->dev, epc->dev.coherent_dma_mask);
> - epf->dev.dma_mask = epc->dev.dma_mask;
> - }
>
> spin_lock_irqsave(&epc->lock, flags);
> list_add_tail(&epf->list, &epc->pci_epf);
> @@ -503,9 +495,7 @@ __pci_epc_create(struct device *dev, const struct pci_epc_ops *ops,
> INIT_LIST_HEAD(&epc->pci_epf);
>
> device_initialize(&epc->dev);
> - dma_set_coherent_mask(&epc->dev, dev->coherent_dma_mask);
> epc->dev.class = pci_epc_class;
> - epc->dev.dma_mask = dev->dma_mask;
> epc->dev.parent = dev;
> epc->ops = ops;
>
> diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c
> index ae1611a62808..95ccc4b8a0a2 100644
> --- a/drivers/pci/endpoint/pci-epf-core.c
> +++ b/drivers/pci/endpoint/pci-epf-core.c
> @@ -99,7 +99,7 @@ EXPORT_SYMBOL_GPL(pci_epf_bind);
> */
> void pci_epf_free_space(struct pci_epf *epf, void *addr, enum pci_barno bar)
> {
> - struct device *dev = &epf->dev;
> + struct device *dev = epf->epc->dev.parent;
>
> if (!addr)
> return;
> @@ -122,7 +122,7 @@ EXPORT_SYMBOL_GPL(pci_epf_free_space);
> void *pci_epf_alloc_space(struct pci_epf *epf, size_t size, enum pci_barno bar)
> {
> void *space;
> - struct device *dev = &epf->dev;
> + struct device *dev = epf->epc->dev.parent;
> dma_addr_t phys_addr;
>
> if (size < 128)
> --
> 2.11.0
>
prev parent reply other threads:[~2018-01-12 18:07 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-11 8:30 [PATCH v3] PCI: endpoint: Use EPC's device in dma_alloc_coherent/dma_free_coherent Kishon Vijay Abraham I
2018-01-12 18:08 ` Lorenzo Pieralisi [this message]
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=20180112180838.GD26438@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=bhelgaas@google.com \
--cc=hch@lst.de \
--cc=kishon@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=robh@kernel.org \
--cc=robin.murphy@arm.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.