From: Christoph Hellwig <hch@lst.de> To: Marek Szyprowski <m.szyprowski@samsung.com> Cc: "Christoph Hellwig" <hch@lst.de>, iommu@lists.linux-foundation.org, "Linus Torvalds" <torvalds@linux-foundation.org>, "Jesper Dangaard Brouer" <brouer@redhat.com>, "Tariq Toukan" <tariqt@mellanox.com>, "Ilias Apalodimas" <ilias.apalodimas@linaro.org>, "Toke Høiland-Jørgensen" <toke@toke.dk>, "Robin Murphy" <robin.murphy@arm.com>, "Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>, "Tony Luck" <tony.luck@intel.com>, "Fenghua Yu" <fenghua.yu@intel.com>, "Keith Busch" <keith.busch@intel.com>, "Jonathan Derrick" <jonathan.derrick@intel.com>, linux-pci@vger.kernel.org, linux-ia64@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 15/15] dma-mapping: bypass indirect calls for dma-direct Date: Fri, 14 Dec 2018 15:24:35 +0100 [thread overview] Message-ID: <20181214142435.GA18448@lst.de> (raw) In-Reply-To: <edef688d-da7b-d42d-2890-7cf1ec415ac5@samsung.com> On Fri, Dec 14, 2018 at 03:11:37PM +0100, Marek Szyprowski wrote: > Hi Christoph, > > On 2018-12-07 20:07, Christoph Hellwig wrote: > > Avoid expensive indirect calls in the fast path DMA mapping > > operations by directly calling the dma_direct_* ops if we are using > > the directly mapped DMA operations. > > > > Signed-off-by: Christoph Hellwig <hch@lst.de> > > This breaks direct DMA on ARM64 (also todays linux-next). NULL > dev->dma_ops fallbacks to get_arch_dma_ops(), which in turn returns > non-functional &dma_dummy_ops on ARM64... Yeah, fallback from direct (NULL) dev->dma_ops to something else won't work with NULL as the indicator. Fortunately we shouldn't even need that thanks to the patch from Robin that explicitly set the dummy ops where needed. Can you try the patch below? diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h index 273e778f7de2..95dbf3ef735a 100644 --- a/arch/arm64/include/asm/dma-mapping.h +++ b/arch/arm64/include/asm/dma-mapping.h @@ -26,11 +26,7 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) { - /* - * We expect no ISA devices, and all other DMA masters are expected to - * have someone call arch_setup_dma_ops at device creation time. - */ - return &dma_dummy_ops; + return NULL; } void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: Marek Szyprowski <m.szyprowski@samsung.com> Cc: "Christoph Hellwig" <hch@lst.de>, iommu@lists.linux-foundation.org, "Linus Torvalds" <torvalds@linux-foundation.org>, "Jesper Dangaard Brouer" <brouer@redhat.com>, "Tariq Toukan" <tariqt@mellanox.com>, "Ilias Apalodimas" <ilias.apalodimas@linaro.org>, "Toke Høiland-Jørgensen" <toke@toke.dk>, "Robin Murphy" <robin.murphy@arm.com>, "Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>, "Tony Luck" <tony.luck@intel.com>, "Fenghua Yu" <fenghua.yu@intel.com>, "Keith Busch" <keith.busch@intel.com>, "Jonathan Derrick" <jonathan.derrick@intel.com>, linux-pci@vger.kernel.org, linux-ia64@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 15/15] dma-mapping: bypass indirect calls for dma-direct Date: Fri, 14 Dec 2018 14:24:35 +0000 [thread overview] Message-ID: <20181214142435.GA18448@lst.de> (raw) In-Reply-To: <edef688d-da7b-d42d-2890-7cf1ec415ac5@samsung.com> On Fri, Dec 14, 2018 at 03:11:37PM +0100, Marek Szyprowski wrote: > Hi Christoph, > > On 2018-12-07 20:07, Christoph Hellwig wrote: > > Avoid expensive indirect calls in the fast path DMA mapping > > operations by directly calling the dma_direct_* ops if we are using > > the directly mapped DMA operations. > > > > Signed-off-by: Christoph Hellwig <hch@lst.de> > > This breaks direct DMA on ARM64 (also todays linux-next). NULL > dev->dma_ops fallbacks to get_arch_dma_ops(), which in turn returns > non-functional &dma_dummy_ops on ARM64... Yeah, fallback from direct (NULL) dev->dma_ops to something else won't work with NULL as the indicator. Fortunately we shouldn't even need that thanks to the patch from Robin that explicitly set the dummy ops where needed. Can you try the patch below? diff --git a/arch/arm64/include/asm/dma-mapping.h b/arch/arm64/include/asm/dma-mapping.h index 273e778f7de2..95dbf3ef735a 100644 --- a/arch/arm64/include/asm/dma-mapping.h +++ b/arch/arm64/include/asm/dma-mapping.h @@ -26,11 +26,7 @@ static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) { - /* - * We expect no ISA devices, and all other DMA masters are expected to - * have someone call arch_setup_dma_ops at device creation time. - */ - return &dma_dummy_ops; + return NULL; } void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
next prev parent reply other threads:[~2018-12-14 14:24 UTC|newest] Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-12-07 19:07 [RFC] avoid indirect calls for DMA direct mappings v2 Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 01/15] swiotlb: remove SWIOTLB_MAP_ERROR Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 02/15] swiotlb: remove dma_mark_clean Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2019-01-02 21:53 ` Tony Luck 2019-01-02 21:53 ` Tony Luck 2019-01-03 7:23 ` Christoph Hellwig 2019-01-03 7:23 ` Christoph Hellwig 2019-01-03 7:23 ` Christoph Hellwig 2019-01-03 17:35 ` Tony Luck 2019-01-03 17:35 ` Tony Luck 2019-01-03 17:35 ` Tony Luck 2019-01-04 8:09 ` Christoph Hellwig 2019-01-04 8:09 ` Christoph Hellwig 2019-01-04 8:09 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 03/15] dma-direct: improve addressability error reporting Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 04/15] dma-direct: use dma_direct_map_page to implement dma_direct_map_sg Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 05/15] dma-direct: merge swiotlb_dma_ops into the dma_direct code Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 06/15] dma-mapping: simplify the dma_sync_single_range_for_{cpu,device} implementation Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 06/15] dma-mapping: simplify the dma_sync_single_range_for_{cpu, device} implementation Christoph Hellwig 2018-12-07 19:07 ` [PATCH 07/15] dma-mapping: merge dma_unmap_page_attrs and dma_unmap_single_attrs Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 08/15] dma-mapping: move dma_get_required_mask to kernel/dma Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 09/15] dma-mapping: move various slow path functions out of line Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 10/15] dma-mapping: move dma_cache_sync " Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 11/15] dma-mapping: always build the direct mapping code Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 12/15] dma-mapping: factor out dummy DMA ops Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-07 19:07 ` [PATCH 13/15] ACPI / scan: Refactor _CCA enforcement Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-14 21:15 ` Bjorn Helgaas 2018-12-14 21:15 ` Bjorn Helgaas 2018-12-07 19:07 ` [PATCH 14/15] vmd: use the proper dma_* APIs instead of direct methods calls Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-14 21:17 ` Bjorn Helgaas 2018-12-14 21:17 ` Bjorn Helgaas 2018-12-14 21:34 ` Derrick, Jonathan 2018-12-14 21:34 ` Derrick, Jonathan 2018-12-07 19:07 ` [PATCH 15/15] dma-mapping: bypass indirect calls for dma-direct Christoph Hellwig 2018-12-07 19:07 ` Christoph Hellwig 2018-12-14 14:11 ` Marek Szyprowski 2018-12-14 14:11 ` Marek Szyprowski 2018-12-14 14:24 ` Christoph Hellwig [this message] 2018-12-14 14:24 ` Christoph Hellwig 2018-12-14 14:32 ` Marek Szyprowski 2018-12-14 14:32 ` Marek Szyprowski 2018-12-15 17:46 ` [15/15] " Guenter Roeck 2018-12-15 17:46 ` Guenter Roeck 2018-12-16 9:02 ` Christoph Hellwig 2018-12-16 9:02 ` Christoph Hellwig 2018-12-16 9:02 ` Christoph Hellwig 2018-12-18 20:34 ` Guillaume Tucker 2018-12-18 20:34 ` Guillaume Tucker 2018-12-18 20:34 ` Guillaume Tucker 2018-12-18 20:34 ` Guillaume Tucker 2018-12-18 20:42 ` Robin Murphy 2018-12-18 20:42 ` Robin Murphy 2018-12-18 20:42 ` Robin Murphy 2018-12-19 6:42 ` Christoph Hellwig 2018-12-19 6:42 ` Christoph Hellwig 2018-12-19 6:42 ` Christoph Hellwig 2018-12-19 6:42 ` Christoph Hellwig 2018-12-20 16:44 ` [PATCH 15/15] " Thierry Reding 2018-12-20 16:44 ` Thierry Reding 2018-12-20 16:46 ` Christoph Hellwig 2018-12-20 16:46 ` Christoph Hellwig 2018-12-08 16:06 ` [RFC] avoid indirect calls for DMA direct mappings v2 Jesper Dangaard Brouer 2018-12-08 16:06 ` Jesper Dangaard Brouer 2018-12-08 16:50 ` Christoph Hellwig 2018-12-08 16:50 ` Christoph Hellwig 2018-12-10 21:51 ` Luck, Tony 2018-12-10 21:51 ` Luck, Tony 2018-12-11 6:51 ` Christoph Hellwig 2018-12-11 6:51 ` Christoph Hellwig 2018-12-11 16:42 ` Luck, Tony 2018-12-11 16:42 ` Luck, Tony 2018-12-11 17:13 ` Luck, Tony 2018-12-11 17:13 ` Luck, Tony 2018-12-11 17:15 ` Christoph Hellwig 2018-12-11 17:15 ` Christoph Hellwig 2018-12-11 17:15 ` Christoph Hellwig 2018-12-13 20:08 ` Christoph Hellwig 2018-12-13 20:08 ` Christoph Hellwig
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=20181214142435.GA18448@lst.de \ --to=hch@lst.de \ --cc=brouer@redhat.com \ --cc=fenghua.yu@intel.com \ --cc=ilias.apalodimas@linaro.org \ --cc=iommu@lists.linux-foundation.org \ --cc=jonathan.derrick@intel.com \ --cc=keith.busch@intel.com \ --cc=konrad.wilk@oracle.com \ --cc=linux-ia64@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=m.szyprowski@samsung.com \ --cc=robin.murphy@arm.com \ --cc=tariqt@mellanox.com \ --cc=toke@toke.dk \ --cc=tony.luck@intel.com \ --cc=torvalds@linux-foundation.org \ --cc=x86@kernel.org \ /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: linkBe 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.